Frage : VBS kopierenaussicht treten mit Einzelteilen vom allgemeinen Faltblatt in Verbindung

Ich benutze den folgenden Index, um Kontakteinzelteile von einem allgemeinen Faltblatt zum privaten Faltblatt eines Benutzers zu kopieren. Es adaequat ist gerade. Ich habe einen Antrag. Beginnend auf Linie 133, kopiert der Index den Kontakt, Markierungen es, wie ungelesen und verschiebt dann den Kontakt auf das private Faltblatt des Benutzers.

I möchte dieses Verhalten geändert. Das Problem, das ich habe, ist, dass ich allen meiner Benutzer die Fähigkeit zugestehen muss, Kontakte im Allgemeinen Faltblatt zu verursachen, damit dieses arbeitet. Zusätzlich wenn mehrere Benutzer den Index gleichzeitig laufen lassen, auswählen einige von ihnen oben einen doppelten Kontakt hier oder dort rt. Was muss ich tun, um es den Kontakt in ihrem privaten Faltblatt kopieren zu lassen, ohne eine Kopie im Allgemeinen Faltblatt zuerst zu verursachen?

If, das Sie nicht durch den vollständigen Code unten waten möchten ist hier, der bedeutende Anteil:

For intIndex = olkPublic.Items.count zu 1 Schritt -1
gesetztem olkContact = zu olkPublic.Items (intIndex). Copy
olkContact.Unread = „falsches "
olkContact.Move olkContacts
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:
6:
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:
 ' vorbei geschrieben 
'Dieser Index benannt durch seinen Begleiterindex TBCUpdate.vbs und durchführt hrt 
'tatsächliche Kreation, Vergleich und Aktualisierung des Verzeichnisses TBC des Benutzers.
'Das TBC Verzeichnis bevölkert vom allgemeinen Faltblatt des TBC Verzeichnisses. Das 
'Faltblatt bevölkert über eine zeitlich geplante Aufgabe, die an läuft 
'Die zeitlich geplante Aufgabe genannt „Verzeichnis-allgemeines Faltblatt des Update-TBC“ und läuft
' 
'TBC Verzeichnis-Update \ UpdatePublicFolder \ Adfind.bat " am 12:00 morgens täglich.


'*** Überprüfung, zum zu sehen, wenn der Benutzer ist ein Mitglied des GPO_NoOLContacts Gruppe ***
Schwaches objADObject, strGroup, objGroupList, objSysInfo, strUser, objUser, wshNetwork

'An den Benutzergegenstand im aktiven Verzeichnis mit dem LDAP Versorger binden.
objSysInfo = CreateObject („ADSystemInfo“) einstellen
strUser = objSysInfo.UserName
objUser = GetObject einstellen („LDAP: /“ u. strUser)
objADObject = GetObject (objUser.AdsPath) einstellen
wshNetwork = CreateObject („WScript.Network“) einstellen 

'strGroup = „GPO_NoOLContacts“
'Wenn IsMember (strGroup) dann
'wscript.quit 
'Beenden wenn

wenn Wochentag (Datum) = vbsunday dann
	moddate = -4
beenden wenn

wenn Wochentag (Datum) = vbmonday dann
	moddate = -5
beenden wenn

wenn Wochentag (Datum) = vbtuesday dann
	moddate = -6
beenden wenn

wenn Wochentag (Datum) = vbwednesday dann
	moddate = 0
beenden wenn

wenn Wochentag (Datum) = vbthursday dann
	moddate = -1
beenden wenn

wenn Wochentag (Datum) = vbfriday dann
	moddate = -2
beenden wenn

wenn Wochentag (Datum) = vbsaturday dann
	moddate = -3
beenden wenn

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

objFSO = CreateObject („Scripting.FileSystemObject“) einstellen
filedate = DateAdd („d“, moddate, Datum ())
filedate = ersetzen (filedate, „/“, „-“)
Dateiname = „g:\TBC-Verzeichnis - modernisiert“ u. filedate u. „.txt“
Gesetztes objFile = objFSO.OpenTextFile (Dateiname, 8)
objFile.WriteLine (jetzt () u. „laufendes PublictoPrivate.vbs von der Maschine: “ u. strComputerName)

Const olFolderContacts = 10
Const olPublicFoldersAllPublicFolders = 18 
Schwaches olkApp, olkSes, olkContacts, olkPublic, olkContact, intIndex, olPV, olkPublicVersion, plkPersonalVersion
Wscript.echo „, die überprüfen TBC Verzeichnis.“
olkApp = CreateObject („Outlook.Application“) einstellen
olkSes = olkApp.GetNamespace („MAPI“) einstellen

'AussichtAusgangsprofilnamen finden und Aussicht in diesem Profil beginnen
Profil = ReadReg („HKCU \ Software \ Microsoft \ Windows NT \ CurrentVersion \ Windows-Mitteilung-Subsystem \ Profile \ DefaultProfile“)
Wscript.echo „, das an Rückstellung Aussichtprofil anschließt: “ u. Profil
objFile.WriteLine (jetzt () u. „, anschließend an Rückstellung Aussichtprofil: “ u. Profil)
olkSes.Logon Profil

'Das TBC Verzeichnis verursachen, wenn es nicht existiert
tbcFolder = olkSes.GetDefaultFolder (olFolderContacts) einstellen
	Auf Störung zunächst wieder.aufnehmen
    myNewFolder = tbcFolder.Folders.Add („TBC Verzeichnis“) einstellen
	wenn Err.number = 0 dann myNewFolder.ShowAsOutlookAB = ausrichten
	Auf Störung Goto- 0

'Position des Verzeichnisfaltblatts TBC des Benutzers
olkContacts = olkSes.GetDefaultFolder (olFolderContacts) einstellen. Faltblätter („TBC Verzeichnis“)

'Position des Verzeichnisfaltblatts der Öffentlichkeits-TBC 
Gesetztes olkPublic = olkSes.GetDefaultFolder (olPublicFoldersAllPublicFolders). Faltblätter („TBC Verzeichnis“). Faltblätter („TBC Verzeichnis“)

'Die Version der persönlichen Kopie des Benutzers des TBC Verzeichnisses finden
'Es sucht nach dem einzigen Kontakt mit „*“ in den Nachnamen
Für intIndex = olkContacts.Items.count zu 1 Schritt -1
	olkPV = olkContacts.items (intIndex) .lastname
	wenn inStr (olkPV, „*") > 0 dann 
		olkPersonalVersion = olkContacts.items (intIndex) .lastname
		für herausnehmen
	beenden wenn
Zunächst

'Die Version der Kopie des allgemeinen Faltblatts des TBC Verzeichnisses finden
'Es sucht nach dem einzigen Kontakt mit „*“ in den Nachnamen
Für intIndex = 1 zu olkPublic.Items.count Schritt +1
	olkPV = olkPublic.items (intIndex) .lastname
	wenn inStr (olkPV, „*") > 0 dann 
		olkPublicVersion = olkPublic.items (intIndex) .lastname
		für herausnehmen
	beenden wenn
Zunächst

wscript.echo „persönliche Version: “ u. olkPersonalVersion
wscript.echo „allgemeine Version: “ u. olkPublicVersion
objFile.WriteLine ("")
objFile.WriteLine (jetzt () u. „persönliche Version: “ u. olkPersonalVersion)
objFile.WriteLine (jetzt () u. „allgemeine Version:   “ u. olkPublicVersion)

'Wenn die Versionen nicht gleich sind
wenn olkPublicVersion <> olkPersonalVersion dann
	
	'Alle Kontakte löschen
	wscript.echo „, die entfernen persönliche Kopie des TBC Verzeichnisses“
	objFile.WriteLine (jetzt () u. „, persönliche Kopie des TBC Verzeichnisses entfernend“)
	Für intIndex = olkContacts.Items.count zu 1 Schritt -1
        	olkContacts.Items.Remove intIndex
	Zunächst
	wscript.echo „Gesamteinzelteile im TBC Verzeichnis: “ u. olkContacts.Items.count
	objFile.WriteLine (jetzt () u. „Gesamteinzelteile im TBC Verzeichnis: “ u. olkContacts.Items.count)
		
	'Kontakte vom allgemeinen Faltblatt zum privaten Faltblatt kopieren
	olkPublic einstellen = olkSes.GetDefaultFolder (olPublicFoldersAllPublicFolders). Faltblätter („TBC Verzeichnis“). Faltblätter („TBC Verzeichnis“)
	„Aktualisierendes“ Wscript.echo u. olkPublic.Items.count u. „TBC Verzeichnis in Verbindung tritt…“
	objFile.WriteLine (jetzt () u. „die Aktualisierung“ u. olkPublic.Items.count u. „TBC das Verzeichnis in Verbindung tritt… ")
	Für intIndex = olkPublic.Items.count zu 1 Schritt -1
       	 	olkContact = olkPublic.Items (intIndex) einstellen. Kopieren
			olkContact.Unread = „falsch“
       	 	olkContact.Move olkContacts
		wenn intIndex Umb. 100 = 0 dann 
			Wscript.echo „nur“ u. intIndex u. " verließen. „
			objFile.WriteLine (jetzt () u. „nur“ u. intIndex u. " left.")
		beenden wenn
		wenn (intIndex < 100) und (intIndex Umb. 25 = 0) dann Wscript.echo „nur“ u. intIndex u. " verließen. „
	Zunächst
beenden wenn

Wscript.echo „Ihr lokales TBC Verzeichnis enthält“ u. olkContacts.Items.count u. „Einzelteile und ist aktuell.“
Wscript.echo ""
Wscript.echo „, wenn jemand vom TBC Verzeichnis fehlt, mit ihnen bitte in Verbindung tritt und bittet um um das“
Wscript.echo „sie aktualisieren ihre Aufzeichnung innen. Mehr Informationen können auf gefunden werden“
Wscript.echo „ES ist Seite.“
Wscript.echo ""
Wscript.echo, „, das dieses Fenster kurz schließt. Bitte warten, während die Bedienerdaten sind modernisiert…“
objFile.WriteLine (jetzt () u. „Ihr TBC Verzeichnis enthält“ u. olkContacts.Items.count u. „Einzelteile und ist aktuelles .")
objFile.WriteLine („---------------------------------------------------------------------------------------------")
objFile.WriteLine ("")
Wscript.sleep (30000)
olkContacts einstellen = nichts
olkPublic einstellen = nichts
olkContact einstellen = nichts
olkSes.Logoff
olkSes einstellen = nichts
olkApp einstellen = nichts
objGroupList einstellen = nichts
objADObject einstellen = nichts


'Funktionen und Material

Funktion IsMember (strGroup)
'Funktion, zum auf Gruppenmitgliedschaft zu prüfen.
'strGroup ist der NT-Name (sAMAccountName) der Gruppe, zum zu prüfen.
'objGroupList ist ein Wörterbuchgegenstand, mit globalem Bereich.
'Zurückbringt zutreffendes bringt, wenn der Benutzer oder der Computer ein Mitglied der Gruppe ist.

  Wenn IsEmpty (objGroupList) dann
    Anruf LoadGroups
  Beenden wenn
  IsMember = objGroupList.Exists (strGroup)
Enden-Funktion

VorLoadGroups
'Subroutine, zum des Wörterbuchgegenstandes mit Gruppenmitgliedschaft zu bevölkern.
'objADObject ist der Benutzer- oder Computergegenstand, mit globalem Bereich.
'objGroupList ist ein Wörterbuchgegenstand, mit globalem Bereich.

  Schwache arrbytGroups, J
  Schwache arrstrGroupSids (), objGroup

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

  objADObject.GetInfoEx Reihe („tokenGroups“), 0
  arrbytGroups = objADObject.Get („tokenGroups“)
  Wenn TypeName (arrbytGroups) = „Byte ()“ dann
    ReDim arrstrGroupSids (0)
    arrstrGroupSids (0) = OctetToHexStr (arrbytGroups)
    objGroup = GetObject einstellen („LDAP: //")
    objGroupList (objGroup.sAMAccountName) = ausrichten en
    objGroup einstellen = nichts
    Unterseeboot herausnehmen
  Beenden wenn
  Wenn UBound (arrbytGroups) = -1 dann
    Unterseeboot herausnehmen
  Beenden wenn

  ReDim arrstrGroupSids (UBound (arrbytGroups))
  Für J = 0 zu UBound (arrbytGroups)
    arrstrGroupSids (j) = OctetToHexStr (arrbytGroups (j))
    objGroup = GetObject einstellen („LDAP: //")
    objGroupList (objGroup.sAMAccountName) = ausrichten en
  Zunächst
  objGroup einstellen = nichts

Unterseeboot beenden

Funktion OctetToHexStr (arrbytOctet)
'Arbeiten, um OctetString (Bytereihe) in Hex Schnur umzuwandeln.

  K verdunkeln
  OctetToHexStr = ""
  Für k = 1 zu Lenb (arrbytOctet)
    OctetToHexStr = OctetToHexStr _
      U. recht („0“ u. Hexe (Ascb (Midb (arrbytOctet, k, 1))), 2)
  Zunächst
Enden-Funktion

Funktion ReadReg (RegPath)
'Arbeiten, um Schnurwert des Registerschlüssels zu lesen

     objRegistry, Schlüssel verdunkeln
     objRegistry einstellen = CreateObject („Wscript.shell“)
     Schlüssel = objRegistry.RegRead (RegPath)
     ReadReg = Schlüssel
Enden-Funktion

Antwort : VBS kopierenaussicht treten mit Einzelteilen vom allgemeinen Faltblatt in Verbindung

PAQ'd, 500 Punkte infrage stellen, die zurückerstattet und in der Lösungsdatenbank gespeichert.
Weitere Lösungen  
 
programming4us programming4us