class= " lineNumbers " de
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 :
|
class= de
id= " codeSnippet767227 " class= " de ' écrit près
'Ce manuscrit s'appelle par son manuscrit TBCUpdate.vbs de compagnon et exécute
'création, comparaison, et mise à jour réelles de l'annuaire du TBC de l'utilisateur.
'L'annuaire de TBC est peuplé de la chemise publique d'annuaire de TBC. Cela
la 'chemise est peuplée par l'intermédiaire d'une tâche programmée qui fonctionne dessus
'La tâche programmée s'appelle « la chemise publique d'annuaire de la mise à jour TBC » et court
'
'Mise à jour d'annuaire de TBC \ UpdatePublicFolder \ Adfind.bat " à 0h00 du matin quotidien.
'Contrôle de *** pour voir si l'utilisateur est un membre du *** de groupe de GPO_NoOLContacts
Faible objADObject, strGroup, objGroupList, objSysInfo, strUser, objUser, wshNetwork
'Lier à l'objet d'utilisateur dans l'annuaire actif avec le fournisseur de LDAP.
Placer l'objSysInfo = le CreateObject (« ADSystemInfo »)
strUser = objSysInfo.UserName
Placer l'objUser = le GetObject (« LDAP : / » et strUser)
Placer l'objADObject = le GetObject (objUser.AdsPath)
Placer le wshNetwork = le CreateObject (« WScript.Network »)
'strGroup = « GPO_NoOLContacts »
'S'IsMember (strGroup) puis
'wscript.quit
'Finir si
si jour de la semaine (date) = vbsunday puis
moddate = -4
finir si
si jour de la semaine (date) = vbmonday puis
moddate = -5
finir si
si jour de la semaine (date) = vbtuesday puis
moddate = -6
finir si
si jour de la semaine (date) = vbwednesday puis
moddate = 0
finir si
si jour de la semaine (date) = vbthursday puis
moddate = -1
finir si
si jour de la semaine (date) = vbfriday puis
moddate = -2
finir si
si jour de la semaine (date) = vbsaturday puis
moddate = -3
finir si
Placer le wshShell = le WScript.CreateObject (« WScript.Shell »)
strComputerName = wshShell.ExpandEnvironmentStrings (« %COMPUTERNAME%")
Placer l'objFSO = le CreateObject (« Scripting.FileSystemObject »)
filedate = DateAdd (« d », moddate, date ())
le filedate = remplacent (filedate, « / », « - »)
nom de fichier = « annuaire de g:\TBC - mis à jour » et filedate et « .txt »
objFile réglé = objFSO.OpenTextFile (nom de fichier, 8)
objFile.WriteLine (maintenant () et « PublictoPrivate.vbs fonctionnant de machine : » et strComputerName)
olFolderContacts de Const = 10
olPublicFoldersAllPublicFolders de Const = 18
Faible olkApp, olkSes, olkContacts, olkPublic, olkContact, intIndex, olPV, olkPublicVersion, plkPersonalVersion
Wscript.echo « vérifiant l'annuaire de TBC. »
Placer l'olkApp = le CreateObject (« Outlook.Application »)
Placer les olkSes = l'olkApp.GetNamespace (« MAPI »)
'Trouver le nom de profil de défaut de perspectives et commencer les perspectives dans ce profil
profil = ReadReg (« HKCU \ logiciel \ Microsoft \ Windows NT \ CurrentVersion \ sous-système transmission de messages de Windows \ profils \ DefaultProfile »)
Wscript.echo « se reliant au profil de perspectives de défaut : » et profil
objFile.WriteLine (maintenant () et « se reliant au profil de perspectives de défaut : » et profil)
profil d'olkSes.Logon
'Créer l'annuaire de TBC s'il n'existe pas
Placer le tbcFolder = l'olkSes.GetDefaultFolder (les olFolderContacts)
Sur l'erreur reprendre après
Placer le myNewFolder = le tbcFolder.Folders.Add (le « annuaire de TBC »)
si Err.number = 0 puis myNewFolder.ShowAsOutlookAB = rectifient
Sur l'erreur 0 GoTo
'Endroit de la chemise d'annuaire du TBC de l'utilisateur
Placer les olkContacts = l'olkSes.GetDefaultFolder (olFolderContacts). Chemises (« annuaire de TBC »)
'Endroit de la chemise d'annuaire du public TBC
olkPublic réglé = olkSes.GetDefaultFolder (olPublicFoldersAllPublicFolders). Chemises (« annuaire de TBC »). Chemises (« annuaire de TBC »)
'Trouver la version de la copie personnelle de l'utilisateur de l'annuaire de TBC
'Il recherche le seul contact avec « * » dans le nom de famille
Pour l'intIndex = l'olkContacts.Items.count à 1 étape -1
olkPV = olkContacts.items (intIndex) .lastname
s'inStr (olkPV, « *") > 0 puis
olkPersonalVersion = olkContacts.items (intIndex) .lastname
sortir pour
finir si
Après
'Trouver la version de la copie de chemise publique de l'annuaire de TBC
'Il recherche le seul contact avec « * » dans le nom de famille
Pour l'intIndex = 1 à l'étape +1 d'olkPublic.Items.count
olkPV = olkPublic.items (intIndex) .lastname
s'inStr (olkPV, « *") > 0 puis
olkPublicVersion = olkPublic.items (intIndex) .lastname
sortir pour
finir si
Après
version personnelle de wscript.echo « : » et olkPersonalVersion
version publique de wscript.echo « : » et olkPublicVersion
objFile.WriteLine ("")
objFile.WriteLine (maintenant () et « version personnelle : » et olkPersonalVersion)
objFile.WriteLine (maintenant () et « version publique : » et olkPublicVersion)
'Si les versions ne sont pas égales
si olkPersonalVersion de <> d'olkPublicVersion alors
'Supprimer tous les contacts
wscript.echo « enlevant la copie personnelle de l'annuaire de TBC »
objFile.WriteLine (maintenant () et « enlevant la copie personnelle de l'annuaire de TBC »)
Pour l'intIndex = l'olkContacts.Items.count à 1 étape -1
intIndex d'olkContacts.Items.Remove
Après
articles totaux de wscript.echo « dans l'annuaire de TBC : » et olkContacts.Items.count
objFile.WriteLine (maintenant () et « articles totaux dans l'annuaire de TBC : » et olkContacts.Items.count)
'Copier les contacts de la chemise publique à la chemise privée
Placer olkPublic = olkSes.GetDefaultFolder (olPublicFoldersAllPublicFolders). Chemises (« annuaire de TBC »). Chemises (« annuaire de TBC »)
Wscript.echo « mettant à jour » et annuaire d'olkPublic.Items.count et « de TBC entre en contact… »
objFile.WriteLine (maintenant () et la « mise à jour » et annuaire d'olkPublic.Items.count et le « de TBC entre en contact… ")
Pour l'intIndex = l'olkPublic.Items.count à 1 étape -1
Placer l'olkContact = l'olkPublic.Items (intIndex). Copier
olkContact.Unread = « faux »
olkContacts d'olkContact.Move
si mod 100 = 0 d'intIndex puis
Wscript.echo « seulement » et intIndex et " sont partis. «
objFile.WriteLine (maintenant () et « seulement » et intIndex et " left.")
finir si
si (intIndex < 100) et (mod 25 = 0 d'intIndex) puis Wscript.echo « seulement » et intIndex et " partaient. «
Après
finir si
Votre TBC annuaire local de Wscript.echo « contient » et olkContacts.Items.count et « articles et est à jour. »
"" De Wscript.echo
Wscript.echo « si quelqu'un est absent à partir de l'annuaire de TBC, svp entre en contact avec eux et demande cela »
Wscript.echo « ils mettent leur disque dedans. Plus d'information peut être trouvée sur »
Wscript.echo « C'est page. »
"" De Wscript.echo
Wscript.echo « que cette fenêtre clôturera sous peu. Attendre svp tandis que les données de serveur sont mises à jour… »
objFile.WriteLine (maintenant () et « votre annuaire de TBC contient » et olkContacts.Items.count et « articles et est .") à jour
objFile.WriteLine (« ---------------------------------------------------------------------------------------------")
objFile.WriteLine ("")
Wscript.sleep (30000)
Placer les olkContacts = rien
Placer olkPublic = rien
Placer l'olkContact = rien
olkSes.Logoff
Placer les olkSes = rien
Placer l'olkApp = rien
Placer l'objGroupList = rien
Placer l'objADObject = rien
'Fonctions et substance
Fonction IsMember (strGroup)
'Fonction à déterminer l'adhésion de groupe.
le 'strGroup est le nom de NT (sAMAccountName) du groupe à examiner.
le 'objGroupList est un objet de dictionnaire, avec la portée globale.
'Renvoie vrai si l'utilisateur ou l'ordinateur est un membre du groupe.
S'IsEmpty (objGroupList) puis
Appel LoadGroups
Finir si
IsMember = objGroupList.Exists (strGroup)
Fonction de fin
LoadGroups secondaire
'Sous-routine pour peupler l'objet de dictionnaire avec des adhésions de groupe.
le 'objADObject est l'objet d'utilisateur ou d'ordinateur, avec la portée globale.
le 'objGroupList est un objet de dictionnaire, avec la portée globale.
Faibles arrbytGroups, j
Faibles arrstrGroupSids (), objGroup
Placer l'objGroupList = le CreateObject (« Scripting.Dictionary »)
objGroupList.CompareMode = vbTextCompare
rangée d'objADObject.GetInfoEx (« tokenGroups »), 0
arrbytGroups = objADObject.Get (« tokenGroups »)
Si TypeName (arrbytGroups) = « byte () » puis
arrstrGroupSids de ReDim (0)
arrstrGroupSids (0) = OctetToHexStr (arrbytGroups)
Placer l'objGroup = le GetObject (« LDAP : //")
l'objGroupList (objGroup.sAMAccountName) = rectifient
Placer l'objGroup = rien
Sortir le sous-marin
Finir si
Si UBound (arrbytGroups) = -1 puis
Sortir le sous-marin
Finir si
arrstrGroupSids de ReDim (UBound (arrbytGroups))
Pour j = 0 à UBound (arrbytGroups)
arrstrGroupSids (j) = OctetToHexStr (arrbytGroups (j))
Placer l'objGroup = le GetObject (« LDAP : //")
l'objGroupList (objGroup.sAMAccountName) = rectifient
Après
Placer l'objGroup = rien
Finir le sous-marin
Fonction OctetToHexStr (arrbytOctet)
'Fonctionner pour convertir OctetString (rangée de byte) en corde Hex.
Obscurcir k
OctetToHexStr = ""
Pour k = 1 à Lenb (arrbytOctet)
_ d'OctetToHexStr = d'OctetToHexStr
Et droit (« 0 » et sortilège (Ascb (Midb (arrbytOctet, k, 1))), 2)
Après
Fonction de fin
Fonction ReadReg (RegPath)
'Fonctionner pour lire la valeur de corde de la clef d'enregistrement
Obscurcir objRegistry, clef
Placer objRegistry = CreateObject (« Wscript.shell »)
Clef = objRegistry.RegRead (RegPath)
ReadReg = clef
Fonction de fin
|