Fråga : Den kopiera framtidsutsikten för VBS kontaktar objekt från offentlig mapp

Förmiddag I using efter skriva som kopierar kontaktobjekt från en offentlig mapp till en användares privata mapp. Den fungerar precis fint. Jag har en förfrågan. Startas on-line 133, skriva kopierar kontakten, markerar den som unread och därefter flyttningar kontakten till användarens privata mapp. skulle något liknande för

I som detta uppförande ändrade. Problemet som jag har, är att jag måste att låta alla min användare kapaciteten att skapa kontakter i den offentliga mappen för att denna ska fungera. Dessutom om multipelanvändare är rinnande skriva samtidigt, några av dem ska väljer upp en dubblettkontakt här eller där. Vad jag behöver att göra för att ha den att duplicera kontakten i deras privata mapp, utan att skapa en kopiera i den offentliga mappen först?

If som du inte önskar att vada till och med helheten, kodifierar nedanfört är här det viktigt portionr: intIndex för

For = olkPublic.Items.count till 1 kliver fastställd olkContact för -1
= olkPublic.Items (intIndex). Copy
olkContact.Unread = ”falsk " olkContacts
för
olkContact.Move > för
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:
" codeBody " ' by 'Detta skrivar kallas av dess följe skrivar TBCUpdate.vbs och utför 'faktisk skapelse, jämförelse och uppdatera av användarens TBC-arkivet. 'TBC-arkivet befolkas från den offentliga mappen för TBC-arkivet. Det 'mappen befolkas via en planlagd uppgift som kör på 'Den planlagda uppgiften kallas ”mappen för arkivet för uppdateringen TBC den offentliga” och kör ', 'TBC-arkivuppdatering \ UpdatePublicFolder \ Adfind.bat " på 12:00förmiddagen dagligen. '*** Kontroll som ser, om användaren är en medlem av den GPO_NoOLContacts grupp***en, Dunkel objADObject, strGroup, objGroupList, objSysInfo, strUser, objUser, wshNetwork 'Röran till användaren anmärker i aktivarkiv med LDAP-familjeförsörjaren. Fastställd objSysInfo = CreateObject (”ADSystemInfo”) strUser = objSysInfo.UserName Fastställd objUser = GetObject (”LDAP: /” & strUser) Fastställd objADObject = GetObject (objUser.AdsPath) Fastställd wshNetwork = CreateObject (”WScript.Network”) 'strGroup = ”GPO_NoOLContacts”, 'Om IsMember (strGroup) därefter 'wscript.quit 'Avsluta om om vardag (datera), = vbsunday därefter moddate = -4 avsluta om om vardag (datera), = vbmonday därefter moddate = -5 avsluta om om vardag (datera), = vbtuesday därefter moddate = -6 avsluta om om vardag (datera), = vbwednesday därefter moddate = 0 avsluta om om vardag (datera), = vbthursday därefter moddate = -1 avsluta om om vardag (datera), = vbfriday därefter moddate = -2 avsluta om om vardag (datera), = vbsaturday därefter moddate = -3 avsluta om Fastställd wshShell = WScript.CreateObject (”WScript.Shell”) strComputerName = wshShell.ExpandEnvironmentStrings (”%COMPUTERNAME%”) Fastställd objFSO = CreateObject (”Scripting.FileSystemObject”) filedate = DateAdd (”D”, moddate, daterar ()) filedate = byter ut (filedate, ”/”, ”-”) filename = ”uppdaterat g:\TBC arkiv -” & filedate & ”.txt”, Fastställdt objFile = objFSO.OpenTextFile (filename, 8) objFile.WriteLine (nu () & ”spring PublictoPrivate.vbs från bearbetar med maskin: ” & strComputerName) Const olFolderContacts = 10 Const olPublicFoldersAllPublicFolders = 18 Dunkel olkApp, olkSes, olkContacts som är olkPublic, olkContact, intIndex, olPV, olkPublicVersion, plkPersonalVersion Wscript.echo ”som kontrollerar TBC-arkivet.”, Fastställd olkApp = CreateObject (”Outlook.Application”) Fastställda olkSes = olkApp.GetNamespace (”MAPI”) 'Fyndframtidsutsiktstandard profilerar känt, och startframtidsutsikten profilerar däri profilera = ReadReg (”HKCU \ programvara \ Microsoft \ Windows NT \ CurrentVersion \ det Windows Messagingundersystemet \ profilerar \ DefaultProfile”), Wscript.echo ”som förbinder till standardframtidsutsikten, profilerar: ” & profilera objFile.WriteLine (nu () & ”förbinda till standardframtidsutsikten profilera: ” & profilera), olkSes.Logon profilerar 'Skapa TBC-arkivet, om det inte finns Fastställd tbcFolder = olkSes.GetDefaultFolder (olFolderContacts) På felmeritförteckning därefter Fastställd myNewFolder = tbcFolder.Folders.Add (”TBC-arkivet”) om Err.number = 0 därefter myNewFolder.ShowAsOutlookAB = True På fel GoTo 0 'Läge av användarens mappen för TBC-arkiv Fastställda olkContacts = olkSes.GetDefaultFolder (olFolderContacts). Mappar (”TBC-arkiv”) 'Läge av den offentliga TBC-arkivmappen Fastställdt olkPublic = olkSes.GetDefaultFolder (olPublicFoldersAllPublicFolders). Mappar (”TBC-arkiv”). Mappar (”TBC-arkiv”) 'Finna versionen av den personliga användaren kopierar av TBC-arkivet 'Det söker efter den enda kontakten med ”*” i efternamn För intIndex = olkContacts.Items.count till 1 kliva -1 olkPV = olkContacts.items (intIndex) .lastname om inStr (olkPV, ”*”) > 0 därefter olkPersonalVersion = olkContacts.items (intIndex) .lastname gå ut för avsluta om Därefter 'Finna versionen av den offentliga mappen kopierar av TBC-arkivet 'Det söker efter den enda kontakten med ”*” i efternamn För intIndex = 1 till olkPublic.Items.count kliver +1 olkPV = olkPublic.items (intIndex) .lastname om inStr (olkPV, ”*”) > 0 därefter olkPublicVersion = olkPublic.items (intIndex) .lastname gå ut för avsluta om Därefter personlig version för wscript.echo ”: ” & olkPersonalVersion offentlig version för wscript.echo ”: ” & olkPublicVersion objFile.WriteLine ("") objFile.WriteLine (nu () & ”personlig version: ” & olkPersonalVersion) objFile.WriteLine (nu () & ”offentlig version: ” & olkPublicVersion) 'Om versionerna inte är jämbördiga om olkPublicVersion<>olkPersonalVersion därefter 'Ta bort alla kontakter wscript.echo ”att ta bort som är personligt, kopierar av TBC-arkivet”, objFile.WriteLine (nu () & ”att ta bort som är personligt, kopierar av TBC-arkivet”), För intIndex = olkContacts.Items.count till 1 kliva -1 olkContacts.Items.Remove-intIndex Därefter sammanlagda objekt för wscript.echo ”i TBC-arkiv: ” & olkContacts.Items.count objFile.WriteLine (nu () & ”sammanlagda objekt i TBC-arkiv: ” & olkContacts.Items.count) 'Kopiera kontakter från den offentliga mappen till den privata mappen Fastställdt olkPublic = olkSes.GetDefaultFolder (olPublicFoldersAllPublicFolders). Mappar (”TBC-arkiv”). Mappar (”TBC-arkiv”) Wscript.echo ”som uppdaterar” & det olkPublic.Items.count-, & ”TBC-arkivet kontaktar…”, objFile.WriteLine (nu () & ”att uppdatera” & det olkPublic.Items.count- & ”TBC-arkivet kontaktar…”), För intIndex = olkPublic.Items.count till 1 kliva -1 Fastställd olkContact = olkPublic.Items (intIndex). Kopiera olkContact.Unread = ”falskt”, olkContact.Move-olkContacts om intIndexändring 100 = 0 därefter Wscript.echo ”endast” & intIndex & " lämnade. ”, objFile.WriteLine (nu () & ”endast” & intIndex & " lämnade. ”) avsluta om om (intIndex < 100) och (intIndexändring 25 = 0) därefter Wscript.echo ”endast” & intIndex & " lämnade. ”, Därefter avsluta om Wscript.echo ”ditt arkiv för lokalen TBC innehåller” & olkContacts.Items.count & ”objekt och är aktuell.”, Wscript.echo-"", Wscript.echo ”, om någon är saknad från TBC-arkivet, behar kontaktar dem och frågar det”, Wscript.echo ”de uppdaterar deras rekord in. Mer information kan finnas på”, Wscript.echo ”DET är sidan.”, Wscript.echo-"", Detta fönster för Wscript.echo ”ska nära kort. Behaga väntanstunder som serverdatan uppdateras…”, objFile.WriteLine (nu () & ”ditt TBC-arkiv innehåller” & olkContacts.Items.count & ”objekt och är aktuellt. ”) objFile.WriteLine (”,---------------------------------------------------------------------------------------------”) objFile.WriteLine ("") Wscript.sleep (30000) Fastställda olkContacts = ingenting Fastställdt olkPublic = ingenting Fastställd olkContact = ingenting olkSes.Logoff Fastställda olkSes = ingenting Fastställd olkApp = ingenting Fastställd objGroupList = ingenting Fastställd objADObject = ingenting 'Fungerar och stoppar Fungera IsMember (strGroup) 'Fungera för att testa för gruppmedlemskap. 'strGroup är NTEN som är känd (sAMAccountName) av gruppen som ska testas. 'objGroupListen är en ordbok anmärker, med global räckvidd. 'Går riktigt tillbaka, om användaren eller datoren är en medlem av gruppen. Om IsEmpty (objGroupList) därefter Appell LoadGroups Avsluta om IsMember = objGroupList.Exists (strGroup) Avsluta fungerar Sub LoadGroups 'Subroutinen som befolkar ordboken, anmärker med gruppmedlemskap. 'objADObject är användaren, eller datoren anmärker, med global räckvidd. 'objGroupListen är en ordbok anmärker, med global räckvidd. Dunkla arrbytGroups, j Dunkla arrstrGroupSids (), objGroup Fastställd objGroupList = CreateObject (”Scripting.Dictionary”) objGroupList.CompareMode = vbTextCompare objADObject.GetInfoEx-samling (”tokenGroups”), 0 arrbytGroups = objADObject.Get (”tokenGroups”) Om TypeName (arrbytGroups) = ”byte ()” därefter ReDim arrstrGroupSids (0) arrstrGroupSids (0) = OctetToHexStr (arrbytGroups) Fastställd objGroup = GetObject (”LDAP: //”) objGroupListen (objGroup.sAMAccountName) = True Fastställd objGroup = ingenting Gå ut suben Avsluta om Om UBound (arrbytGroups) = -1 därefter Gå ut suben Avsluta om ReDim arrstrGroupSids (UBound (arrbytGroups)) För j = 0 till UBound (arrbytGroups) arrstrGroupSids (j) = OctetToHexStr (arrbytGroups (j)) Fastställd objGroup = GetObject (”LDAP: //”) objGroupListen (objGroup.sAMAccountName) = True Därefter Fastställd objGroup = ingenting Avsluta suben Fungera OctetToHexStr (arrbytOctet) 'Fungera för att konvertera OctetString (bytesamling) till hexen stränger. Dunkelt K OctetToHexStr = "", För K = 1 till Lenb (arrbytOctet) OctetToHexStr = OctetToHexStr _, & högert (”0” & hexen (Ascb (Midb (arrbytOctet, K, 1))), 2) Därefter Avsluta fungerar Fungera ReadReg (RegPath) 'Fungera för att läsa stränger värderar av den nyckel- registreringen Dunkelt objRegistry, nyckel- Fastställdt objRegistry = CreateObject (”Wscript.shell”) Stämma = objRegistry.RegRead (RegPath) ReadReg = stämm Avsluta fungerar
" klar "

Svar : Den kopiera framtidsutsikten för VBS kontaktar objekt från offentlig mapp

Ifrågasätta PAQ'd, 500 pekar återbetalat och lagrat i lösningsdatabasen.
Andra lösningar  
 
programming4us programming4us