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 "
|