Question : Les perspectives de copie de VBS entrent en contact avec des articles de chemise publique

J'emploie le manuscrit suivant pour copier des articles de contact d'une chemise publique à la chemise privée d'un utilisateur. Cela fonctionne juste très bien. J'ai une demande. Commençant sur la ligne 133, le manuscrit copie le contact, marques il comme non lu, et puis déplace le contact à la chemise privée de l'utilisateur. le

I voudrait ce comportement changé. Le problème que j'ai est que je dois permettre à tous mes utilisateurs la capacité de créer des contacts dans la chemise publique pour que ceci travaille. En plus, si les utilisateurs multiples courent le manuscrit en même temps, certains d'entre eux sélectionneront vers le haut un contact double ici ou là. Queest-ce que je dois faire pour le faire reproduire le contact dans leur chemise privée sans créer une copie dans la chemise publique d'abord ? le

If que vous ne voulez pas patauger par le code entier ci-dessous voici la part significative : intIndex du

For = olkPublic.Items.count à 1 olkContact de l'étape -1
= olkPublic.Items réglés (intIndex). Copy
olkContact.Unread = olkContacts
du
olkContact.Move class= > " clair " de
> de " codeSnippet " de class= de
class= " lineNumbers " de
class= 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 :
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
class= de

Réponse : Les perspectives de copie de VBS entrent en contact avec des articles de chemise publique

Interroger PAQ'd, 500 points remboursés, et stockés dans la base de données de solution.
Autres solutions  
  •  MS Excel 2007 et pdf - l'exportation vers le pdf prend de longues heures !
  •  Dans le Perl, comment j'ajoute une valeur à la liste, puis le contrôle pour voir si la valeur existent avant d'ajouter une nouvelle valeur
  •  Comment fais j'initialiser de la HP BL460c G6 de san et de la HP XP 240000
  •  Comment fais j'employer une clef de permis de volume sur un ordinateur de HP avec du CD de restauration
  •  Emplacement primaire de deux SCCM dans l'annuaire actif
  •  L'initiateur et la HP D2D de l'iSCSI R2 du serveur 2008 de Windows GERCENT l'issue
  •  Stocker le dossier dans le mysql using connector.net et le champ de goutte
  •  Carte vidéo d'USB - bit 32 sur le matériel travaillant au niveau du bit 64 ?
  •  asp.net que j'essaye de convertir une forme de HTML en forme d'aspx ou ? ce qui jamais. Aide du besoin sur la façon dont à à elle.
  •  Winzip 12 issues de secours du travail ?
  •  
    programming4us programming4us