Questione : La prospettiva di copiatura di VBS si mette in contatto con gli articoli dal dispositivo di piegatura pubblico

Sto usando il seguente scritto per copiare gli elementi del contatto da un dispositivo di piegatura pubblico al dispositivo di piegatura riservato dell'utente. Funziona appena benissimo. Ho una richiesta. Cominciando sulla linea 133, lo scritto copia il contatto, contrassegni esso come non letto ed allora sposta il contatto verso il dispositivo di piegatura riservato dell'utente. il

I gradirebbe questo comportamento variabile. Il problema che ho è che devo concedere tutti i miei utenti la capacità di generare i contatti nel dispositivo di piegatura pubblico affinchè questo funzioni. Ulteriormente, se gli utenti multipli stiano facendo funzionare lo scritto allo stesso tempo, alcuni di loro selezioneranno in su un contatto duplicato qui o là. Che cosa devo fare per farlo duplicare il contatto nel loro dispositivo di piegatura riservato senza generare una copia nel dispositivo di piegatura pubblico in primo luogo? il

If che non volete guadare con l'intero codice qui sotto qui è la parte significativa: intIndex del

For = olkPublic.Items.count a 1 olkContact di punto -1
= olkPublic.Items stabiliti (intIndex). Copy
olkContact.Unread = olkContacts
del
olkContact.Move class= > " libero " del
> " del codeSnippet " del class= del
class= " lineNumbers " del
class= del
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= " del
 ' scritto vicino 
'Questo scritto è denominato dal relativo scritto TBCUpdate.vbs del compagno ed effettua 
'creazione, confronto ed aggiornamento reali dell'indice di TBC dell'utente.
'L'indice di TBC è popolato dal dispositivo di piegatura pubblico dell'indice di TBC. Quello 
'il dispositivo di piegatura è popolato via un'operazione preveduta che funziona sopra 
'L'operazione preveduta è chiamata “dispositivo di piegatura pubblico dell'indice dell'aggiornamento TBC„ e funziona
' 
'Aggiornamento dell'indice di TBC \ UpdatePublicFolder \ Adfind.bat " al 12:00 quotidiano.


'Controllo del *** per vedere se l'utente è un membro del *** del gruppo di GPO_NoOLContacts
objADObject fioco, strGroup, objGroupList, objSysInfo, strUser, objUser, wshNetwork

'Legare all'oggetto di utente nell'indice attivo con il fornitore di LDAP.
Regolare il objSysInfo = CreateObject (“ADSystemInfo„)
strUser = objSysInfo.UserName
Regolare il objUser = GetObject (“LDAP: /„ & strUser)
Regolare il objADObject = GetObject (objUser.AdsPath)
Regolare il wshNetwork = CreateObject (“WScript.Network„) 

'strGroup = “GPO_NoOLContacts„
'Se IsMember (strGroup) allora
'wscript.quit 
'Concluder se

se giorno della settimana (data) = vbsunday allora
	moddate = -4
concluder se

se giorno della settimana (data) = vbmonday allora
	moddate = -5
concluder se

se giorno della settimana (data) = vbtuesday allora
	moddate = -6
concluder se

se giorno della settimana (data) = vbwednesday allora
	moddate = 0
concluder se

se giorno della settimana (data) = vbthursday allora
	moddate = -1
concluder se

se giorno della settimana (data) = vbfriday allora
	moddate = -2
concluder se

se giorno della settimana (data) = vbsaturday allora
	moddate = -3
concluder se

Regolare il wshShell = WScript.CreateObject (“WScript.Shell„)
strComputerName = wshShell.ExpandEnvironmentStrings (“%COMPUTERNAME%")

Regolare il objFSO = CreateObject (“Scripting.FileSystemObject„)
filedate = DateAdd (“d„, moddate, data ())
il filedate = sostituisce (filedate, “/„, “-„)
nome di schedario = “indice di g:\TBC - aggiornato„ & filedate & “.txt„
objFile stabilito = objFSO.OpenTextFile (nome di schedario, 8)
objFile.WriteLine (ora () & “PublictoPrivate.vbs funzionante dalla macchina: „ & strComputerName)

olFolderContacts di Const = 10
olPublicFoldersAllPublicFolders di Const = 18 
olkApp fioco, olkSes, olkContacts, olkPublic, olkContact, intIndex, olPV, olkPublicVersion, plkPersonalVersion
Wscript.echo “che controllano l'indice di TBC.„
Regolare il olkApp = CreateObject (“Outlook.Application„)
Regolare i olkSes = olkApp.GetNamespace (“MAPI„)

'Trovare il nome di profilo di difetto di prospettiva ed iniziare la prospettiva in quel profilo
profilo = ReadReg (“HKCU \ software \ Microsoft \ Windows NT \ CurrentVersion \ sottosistema messaggio di Windows \ profili \ DefaultProfile„)
Wscript.echo “che si collega al profilo di prospettiva di difetto: „ & profilo
objFile.WriteLine (ora () & “collegandosi al profilo di prospettiva di difetto: „ & profilo)
profilo di olkSes.Logon

'Generare l'indice di TBC se non esiste
Regolare il tbcFolder = olkSes.GetDefaultFolder (olFolderContacts)
	Sull'errore riprendere dopo
    Regolare il myNewFolder = tbcFolder.Folders.Add (“indice di TBC„)
	se Err.number = 0 allora myNewFolder.ShowAsOutlookAB = allineano
	Sull'errore 0 di avanzamento

'Posizione del dispositivo di piegatura dell'indice di TBC dell'utente
Regolare i olkContacts = olkSes.GetDefaultFolder (olFolderContacts). Dispositivi di piegatura (“indice di TBC„)

'Posizione del dispositivo di piegatura dell'indice del pubblico TBC 
olkPublic stabilito = olkSes.GetDefaultFolder (olPublicFoldersAllPublicFolders). Dispositivi di piegatura (“indice di TBC„). Dispositivi di piegatura (“indice di TBC„)

'Trovare la versione della copia personale dell'utente dell'indice di TBC
'Cerca l'unico contatto con “*„ nel cognome
Per intIndex = olkContacts.Items.count a 1 punto -1
	olkPV = olkContacts.items (intIndex) .lastname
	se inStr (olkPV, “*") > 0 allora 
		olkPersonalVersion = olkContacts.items (intIndex) .lastname
		uscire per
	concluder se
Dopo

'Trovare la versione della copia del dispositivo di piegatura pubblico dell'indice di TBC
'Cerca l'unico contatto con “*„ nel cognome
Per intIndex = 1 a punto +1 di olkPublic.Items.count
	olkPV = olkPublic.items (intIndex) .lastname
	se inStr (olkPV, “*") > 0 allora 
		olkPublicVersion = olkPublic.items (intIndex) .lastname
		uscire per
	concluder se
Dopo

versione personale di wscript.echo “: „ & olkPersonalVersion
versione pubblica di wscript.echo “: „ & olkPublicVersion
objFile.WriteLine ("")
objFile.WriteLine (ora () & “versione personale: „ & olkPersonalVersion)
objFile.WriteLine (ora () & “versione pubblica:   „ & olkPublicVersion)

'Se le versioni non sono uguali
se olkPersonalVersion del <> di olkPublicVersion allora
	
	'Cancellare tutti i contatti
	wscript.echo “che rimuovono copia personale dell'indice di TBC„
	objFile.WriteLine (ora () & “rimuovendo copia personale dell'indice di TBC„)
	Per intIndex = olkContacts.Items.count a 1 punto -1
        	intIndex di olkContacts.Items.Remove
	Dopo
	articoli totali di wscript.echo “nell'indice di TBC: „ & olkContacts.Items.count
	objFile.WriteLine (ora () & “articoli totali nell'indice di TBC: „ & olkContacts.Items.count)
		
	'Copiare i contatti dal dispositivo di piegatura pubblico al dispositivo di piegatura riservato
	Regolar olkPublic = olkSes.GetDefaultFolder (olPublicFoldersAllPublicFolders). Dispositivi di piegatura (“indice di TBC„). Dispositivi di piegatura (“indice di TBC„)
	Wscript.echo “che aggiornano„ & l'indice di TBC “& di olkPublic.Items.count si mette in contatto con…„
	objFile.WriteLine (ora () & “aggiornare„ & l'indice di TBC “& di olkPublic.Items.count si mettono in contatto con… ")
	Per intIndex = olkPublic.Items.count a 1 punto -1
       	 	Regolare il olkContact = olkPublic.Items (intIndex). Copiare
			olkContact.Unread = “falso„
       	 	olkContacts di olkContact.Move
		se MOD 100 = 0 del intIndex allora 
			Wscript.echo “soltanto„ & il intIndex & " hanno andato. “
			objFile.WriteLine (ora () & “soltanto„ & intIndex & " left.")
		concluder se
		se (intIndex < 100) e (MOD 25 = 0 del intIndex) allora Wscript.echo “soltanto„ & il intIndex & " vadano. “
	Dopo
concluder se

Il vostro TBC indice locale di Wscript.echo “contiene„ & olkContacts.Items.count & “articoli ed è aggiornato.„
"" Di Wscript.echo
Wscript.echo “se qualcuno manca dall'indice di TBC, se li mettono in contatto con prego e chiedono quello„
Wscript.echo “aggiornano la loro annotazione dentro. Più informazioni possono essere trovate su„
Wscript.echo “è pagina.„
"" Di Wscript.echo
Wscript.echo “che questa finestra si chiuderà presto. Attendere prego mentre i dati dell'assistente sono aggiornati…„
objFile.WriteLine (ora () & “il vostro indice di TBC contiene„ & olkContacts.Items.count & “articoli ed è .") aggiornato
objFile.WriteLine (“---------------------------------------------------------------------------------------------")
objFile.WriteLine ("")
Wscript.sleep (30000)
Regolare i olkContacts = niente
Regolar olkPublic = niente
Regolare il olkContact = niente
olkSes.Logoff
Regolare i olkSes = niente
Regolare il olkApp = niente
Regolare il objGroupList = niente
Regolare il objADObject = niente


'Funzioni e roba

Funzione IsMember (strGroup)
'Funzione da provare a composizione di gruppo.
'lo strGroup è il nome del NT (sAMAccountName) del gruppo da provare.
'il objGroupList è un oggetto del dizionario, con portata globale.
'Restituisce allineare se l'utente o il calcolatore è un membro del gruppo.

  Se IsEmpty (objGroupList) allora
    Chiamata LoadGroups
  Concluder se
  IsMember = objGroupList.Exists (strGroup)
Funzione di conclusione

LoadGroups secondario
'Sottoprogramma per popolare l'oggetto del dizionario con le composizioni di gruppo.
'il objADObject è l'oggetto del calcolatore o dell'utente, con portata globale.
'il objGroupList è un oggetto del dizionario, con portata globale.

  arrbytGroups fiochi, J
  arrstrGroupSids fiochi (), objGroup

  Regolare il objGroupList = CreateObject (“Scripting.Dictionary„)
  objGroupList.CompareMode = vbTextCompare

  allineamento di objADObject.GetInfoEx (“tokenGroups„), 0
  arrbytGroups = objADObject.Get (“tokenGroups„)
  Se TypeName (arrbytGroups) = “byte ()„ allora
    arrstrGroupSids di ReDim (0)
    arrstrGroupSids (0) = OctetToHexStr (arrbytGroups)
    Regolare il objGroup = GetObject (“LDAP: //")
    il objGroupList (objGroup.sAMAccountName) = allinea
    Regolare il objGroup = niente
    Uscire il sommergibile
  Concluder se
  Se UBound (arrbytGroups) = -1 allora
    Uscire il sommergibile
  Concluder se

  arrstrGroupSids di ReDim (UBound (arrbytGroups))
  Per J = 0 a UBound (arrbytGroups)
    arrstrGroupSids (j) = OctetToHexStr (arrbytGroups (j))
    Regolare il objGroup = GetObject (“LDAP: //")
    il objGroupList (objGroup.sAMAccountName) = allinea
  Dopo
  Regolare il objGroup = niente

Concludere il sommergibile

Funzione OctetToHexStr (arrbytOctet)
'Funzionare per convertire OctetString (allineamento di byte) in stringa Hex.

  Oscurare K
  OctetToHexStr = ""
  Per K = 1 a Lenb (arrbytOctet)
    _ di OctetToHexStr = di OctetToHexStr
      & di destra (“0„ & sfortuna (Ascb (Midb (arrbytOctet, K, 1))), 2)
  Dopo
Funzione di conclusione

Funzione ReadReg (RegPath)
'Funzionare per leggere il valore di stringa della chiave di registrazione

     Oscurare objRegistry, chiave
     Regolar objRegistry = CreateObject (“Wscript.shell„)
     Chiave = objRegistry.RegRead (RegPath)
     ReadReg = chiave
Funzione di conclusione
class= del

Risposta : La prospettiva di copiatura di VBS si mette in contatto con gli articoli dal dispositivo di piegatura pubblico

Interrogare PAQ'd, 500 punti rimborsati e memorizzati nella base di dati della soluzione.
Altre soluzioni  
 
programming4us programming4us