Pergunta : A probabilidade de copi de VBS contata artigos do dobrador público

Eu estou usando o seguinte certificado para copiar artigos do contato de um dobrador público ao dobrador confidencial de um usuário. Trabalha apenas muito bem. Eu tenho um pedido. Começando na linha 133, o certificado copia o contato, marcas ele como unread, e move então o contato para o dobrador confidencial do usuário. o

I gostaria deste comportamento mudado. O problema que eu tenho é que eu tenho que permitir a todos meus usuários a habilidade de criar contatos no dobrador público para que este trabalhe. Adicionalmente, se os usuários múltiplos estão funcionando o certificado ao mesmo tempo, alguns deles escolherão acima um contato duplicado aqui ou lá. Que eu preciso de fazer para o mandar duplicar o contato em seu dobrador confidencial sem criar uma cópia no dobrador público primeiramente? o

If que você não quer vadear com o código inteiro abaixo é aqui a parte significativa: intIndex do

For = olkPublic.Items.count a 1 olkContact da etapa -1
= olkPublic.Items ajustados (intIndex). Copy
olkContact.Unread = olkContacts
do
olkContact.Move class= > " desobstruído " do
> do " codeSnippet " do class= do
class= " lineNumbers " do
class= do
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
id= " codeSnippet767227 " class= " do
 ' escrito perto 
'Este certificado é chamado por seu certificado TBCUpdate.vbs do companheiro e executa 
'criação, comparação, e atualização reais do diretório de TBC do usuário.
'O diretório de TBC é povoado do dobrador público do diretório de TBC. Isso 
'o dobrador é povoado através de uma tarefa programada que funcione sobre 
'A tarefa programada é chamada da “dobrador público do diretório atualização TBC” e funciona
' 
'Atualização do diretório de TBC \ UpdatePublicFolder \ Adfind.bat " no 12:00 am diário.


'Verificação do *** para considerar se o usuário é um membro do *** do grupo de GPO_NoOLContacts
objADObject não ofuscante, strGroup, objGroupList, objSysInfo, strUser, objUser, wshNetwork

'Ligar ao objeto de usuário no diretório ativo com o fornecedor de LDAP.
Ajustar o objSysInfo = o CreateObject (“ADSystemInfo”)
strUser = objSysInfo.UserName
Ajustar o objUser = o GetObject (“LDAP: /” & strUser)
Ajustar o objADObject = o GetObject (objUser.AdsPath)
Ajustar o wshNetwork = o CreateObject (“WScript.Network”) 

'strGroup = “GPO_NoOLContacts”
'Se IsMember (strGroup) então
'wscript.quit 
'Terminar se

se dia útil (data) = vbsunday então
	moddate = -4
terminar se

se dia útil (data) = vbmonday então
	moddate = -5
terminar se

se dia útil (data) = vbtuesday então
	moddate = -6
terminar se

se dia útil (data) = vbwednesday então
	moddate = 0
terminar se

se dia útil (data) = vbthursday então
	moddate = -1
terminar se

se dia útil (data) = vbfriday então
	moddate = -2
terminar se

se dia útil (data) = vbsaturday então
	moddate = -3
terminar se

Ajustar o wshShell = o WScript.CreateObject (“WScript.Shell”)
strComputerName = wshShell.ExpandEnvironmentStrings (“%COMPUTERNAME%")

Ajustar o objFSO = o CreateObject (“Scripting.FileSystemObject”)
filedate = DateAdd (“d”, moddate, data ())
o filedate = substitui (filedate, “/”, “-”)
nome de arquivo = de “diretório g:\TBC - atualizado” & filedate & “.txt”
objFile ajustado = objFSO.OpenTextFile (nome de arquivo, 8)
objFile.WriteLine (agora () & “PublictoPrivate.vbs de funcionamento da máquina: ” & strComputerName)

olFolderContacts de Const = 10
olPublicFoldersAllPublicFolders de Const = 18 
olkApp não ofuscante, olkSes, olkContacts, olkPublic, olkContact, intIndex, olPV, olkPublicVersion, plkPersonalVersion
Wscript.echo “que verific o diretório de TBC.”
Ajustar o olkApp = o CreateObject (“Outlook.Application”)
Ajustar os olkSes = o olkApp.GetNamespace (“MAPI”)

'Encontrar o nome de perfil de defeito da probabilidade e começar a probabilidade nesse perfil
perfil = ReadReg (“HKCU \ software \ Microsoft \ Windows NT \ CurrentVersion \ subsistema mensagem de Windows \ perfis \ DefaultProfile”)
Wscript.echo “que coneta ao perfil da probabilidade do defeito: ” & perfil
objFile.WriteLine (agora () & “conetando ao perfil da probabilidade do defeito: ” & perfil)
perfil de olkSes.Logon

'Criar o diretório de TBC se não existe
Ajustar o tbcFolder = o olkSes.GetDefaultFolder (os olFolderContacts)
	No erro recomeçar em seguida
    Ajustar o myNewFolder = o tbcFolder.Folders.Add (de “o diretório TBC”)
	se Err.number = 0 então myNewFolder.ShowAsOutlookAB = retificam
	No erro 0 empreendedores

'Posição do dobrador do diretório de TBC do usuário
Ajustar olkContacts = olkSes.GetDefaultFolder (olFolderContacts). Dobradores (de “diretório TBC”)

'Posição do dobrador do diretório do público TBC 
olkPublic ajustado = olkSes.GetDefaultFolder (olPublicFoldersAllPublicFolders). Dobradores (de “diretório TBC”). Dobradores (de “diretório TBC”)

'Encontrar a versão da cópia pessoal do usuário do diretório de TBC
'Procura o único contato com “*” no apelido
Para o intIndex = o olkContacts.Items.count a 1 etapa -1
	olkPV = olkContacts.items (intIndex) .lastname
	se inStr (olkPV, “*") > 0 então 
		olkPersonalVersion = olkContacts.items (intIndex) .lastname
		retirar para
	terminar se
Em seguida

'Encontrar a versão da cópia do dobrador público do diretório de TBC
'Procura o único contato com “*” no apelido
Para o intIndex = 1 a etapa +1 de olkPublic.Items.count
	olkPV = olkPublic.items (intIndex) .lastname
	se inStr (olkPV, “*") > 0 então 
		olkPublicVersion = olkPublic.items (intIndex) .lastname
		retirar para
	terminar se
Em seguida

versão pessoal de wscript.echo “: ” & olkPersonalVersion
versão pública de wscript.echo “: ” & olkPublicVersion
objFile.WriteLine ("")
objFile.WriteLine (agora () & “versão pessoal: ” & olkPersonalVersion)
objFile.WriteLine (agora () & “versão pública:   ” & olkPublicVersion)

'Se as versões não são iguais
se olkPersonalVersion do <> do olkPublicVersion então
	
	'Suprimir de todos os contatos
	wscript.echo “que removem a cópia pessoal do diretório de TBC”
	objFile.WriteLine (agora () & “removendo a cópia pessoal do diretório de TBC”)
	Para o intIndex = o olkContacts.Items.count a 1 etapa -1
        	intIndex de olkContacts.Items.Remove
	Em seguida
	artigos totais de wscript.echo “no diretório de TBC: ” & olkContacts.Items.count
	objFile.WriteLine (agora () & “artigos totais no diretório de TBC: ” & olkContacts.Items.count)
		
	'Copiar contatos do dobrador público ao dobrador confidencial
	Ajustar olkPublic = olkSes.GetDefaultFolder (olPublicFoldersAllPublicFolders). Dobradores (de “diretório TBC”). Dobradores (de “diretório TBC”)
	Wscript.echo “que atualizam” & o diretório de olkPublic.Items.count & de “TBC contatam…”
	objFile.WriteLine (agora () & a “atualização” & o diretório de olkPublic.Items.count & de “TBC contatam… ")
	Para o intIndex = o olkPublic.Items.count a 1 etapa -1
       	 	Ajustar o olkContact = o olkPublic.Items (intIndex). Copiar
			olkContact.Unread = “falso”
       	 	olkContacts de olkContact.Move
		se modificação 100 = 0 do intIndex então 
			Wscript.echo “somente” & o intIndex & " sairam. “
			objFile.WriteLine (agora () & “somente” & intIndex & " left.")
		terminar se
		se (intIndex < 100) e (modificação 25 = 0 do intIndex) então Wscript.echo “somente” & o intIndex & " sairam. “
	Em seguida
terminar se

Seu TBC diretório local de Wscript.echo “contem” & olkContacts.Items.count & “artigos e é moderno.”
"" De Wscript.echo
Wscript.echo “se alguém falta do diretório de TBC, contata-os por favor e pede-o aquele”
Wscript.echo “atualizam seu registro dentro. Mais informação pode ser encontrada em”
Wscript.echo “é página.”
"" De Wscript.echo
Wscript.echo “que esta janela se fechará logo. Esperar por favor quando os dados do usuário forem atualizados…”
objFile.WriteLine (agora () & “seu diretório de TBC contem” & olkContacts.Items.count & “artigos e é .") moderno
objFile.WriteLine (“---------------------------------------------------------------------------------------------")
objFile.WriteLine ("")
Wscript.sleep (30000)
Ajustar olkContacts = nada
Ajustar olkPublic = nada
Ajustar o olkContact = nada
olkSes.Logoff
Ajustar olkSes = nada
Ajustar o olkApp = nada
Ajustar o objGroupList = nada
Ajustar o objADObject = nada


'Funções e material

Função IsMember (strGroup)
'Função a testar para a sociedade de grupo.
'o strGroup é o nome do NT (sAMAccountName) do grupo a testar.
'o objGroupList é um objeto do dicionário, com espaço global.
'Retorna verdadeiro se o usuário ou o computador são um membro do grupo.

  Se IsEmpty (objGroupList) então
    Chamada LoadGroups
  Terminar se
  IsMember = objGroupList.Exists (strGroup)
Função do fim

LoadGroups secundário
'Sub-rotina para povoar o objeto do dicionário com sociedades de grupo.
'o objADObject é o objeto do usuário ou do computador, com espaço global.
'o objGroupList é um objeto do dicionário, com espaço global.

  arrbytGroups não ofuscantes, j
  arrstrGroupSids não ofuscantes (), objGroup

  Ajustar o objGroupList = o CreateObject (“Scripting.Dictionary”)
  objGroupList.CompareMode = vbTextCompare

  disposição de objADObject.GetInfoEx (“tokenGroups”), 0
  arrbytGroups = objADObject.Get (“tokenGroups”)
  Se TypeName (arrbytGroups) = “byte ()” então
    arrstrGroupSids de ReDim (0)
    arrstrGroupSids (0) = OctetToHexStr (arrbytGroups)
    Ajustar o objGroup = o GetObject (“LDAP: //")
    o objGroupList (objGroup.sAMAccountName) = retifica
    Ajustar o objGroup = nada
    Retirar o submarino
  Terminar se
  Se UBound (arrbytGroups) = -1 então
    Retirar o submarino
  Terminar se

  arrstrGroupSids de ReDim (UBound (arrbytGroups))
  Para j = 0 a UBound (arrbytGroups)
    arrstrGroupSids (j) = OctetToHexStr (arrbytGroups (j))
    Ajustar o objGroup = o GetObject (“LDAP: //")
    o objGroupList (objGroup.sAMAccountName) = retifica
  Em seguida
  Ajustar o objGroup = nada

Terminar o submarino

Função OctetToHexStr (arrbytOctet)
'Funcionar para converter OctetString (disposição do byte) à corda Hex.

  Escurecer k
  OctetToHexStr = ""
  Para k = 1 a Lenb (arrbytOctet)
    _ de OctetToHexStr = de OctetToHexStr
      & direito (“0” & Hex (Ascb (Midb (arrbytOctet, k, 1))), 2)
  Em seguida
Função do fim

Função ReadReg (RegPath)
'Funcionar para ler o valor de corda da chave do registro

     Escurecer objRegistry, chave
     Ajustar objRegistry = CreateObject (“Wscript.shell”)
     Chave = objRegistry.RegRead (RegPath)
     ReadReg = chave
Função do fim
class= do

Resposta : A probabilidade de copi de VBS contata artigos do dobrador público

Questionar PAQ'd, 500 pontos reembolsados, e armazenados na base de dados da solução.
Outras soluções  
 
programming4us programming4us