Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

VBS - Kann man die Datendatei aus Outlook entfernen und neu hinzufügen?

Frage Entwicklung JavaScript

Mitglied: thl1966

thl1966 (Level 1) - Jetzt verbinden

11.06.2013 um 12:11 Uhr, 2004 Aufrufe, 13 Kommentare

Hallo an alle Forenteilnehmer,

das man aus Outlook bestimmte Dinge durch Instanzieren des Objektes herauslesen ist mir klar.

Gibt es eine Möglichkeit, dass man in Outlook die Datendateien per VB-Skript entfernt und dort
z.B. eine neue PST-Datei als Datendatei hinzufügt.

Hintergrund ist der, dass ich bei vielen Anwendern im Netzwerk die PST-Dateien nicht manuell aus
Outlook heraus löschen, die PST-Datei auf ein neues Laufwerk verschieben und dann neu hinzufügen möchten.

Das herauslesen der eingerichteten PST-Dateien und das kopieren auf das neue Laufwerk inkl. ACLs funktioniert schon.

Wie kann ich den Datenpfad in Outlook per VB-Skript ändern-/löschen-/hinzufügen?

Für ein kleines Beispiel wäre ich dankbar.

Gruß

Thomas
Mitglied: colinardo
11.06.2013 um 12:33 Uhr
Hallo Thomas,

lese mal folgenden Artikel: http://www.administrator.de/forum/powershell-datendateien-in-outlook-au ...

Grüße Uwe
Bitte warten ..
Mitglied: thl1966
11.06.2013 um 13:23 Uhr
Hallo Uwe,

das ist ja mein Beitrag.

Hier ging es ums auslesen.

Ich möchte aber etwas in Outlook ändern (Nur VBS), das beantwortet mir leider nicht die Frage.

Aber trotzdem danke für die Hilfe.

Gruß
Thomas
Bitte warten ..
Mitglied: colinardo
11.06.2013 um 13:24 Uhr
Sorry hat ich glatt übersehen, dachte schon, den Namen Thomas hast du in letzter Zeit schon mal gesehen
Bitte warten ..
Mitglied: Penny.Cilin
11.06.2013 um 13:36 Uhr
Hallo Thomas,

wenn Du es bereits aulesen kannst, müßtest Du es auch wieder schreiben können. Ich bin jetzt kein VBS bzw. Powershell Experte. Schau mal bei powershell.com oder Google nach Pfadnamen schreiben, oder ähnlich.


Gruss Penny.
Bitte warten ..
Mitglied: thl1966
11.06.2013 um 14:28 Uhr
Hallo Penny,

das dachte ich mir auch, wenn ich aus der Instanz auslesen kann, müsste doch schreiben kein Problem sein.
Aber weit gefehlt! Suche schon seit ca. eine Stunde im Netz und habe noch nichts brauchbares gefunden.
Einzig alleine ein paar Registry-Werte, mit Werte die beim anlegen frei von Microsoft gewählt werden unter

HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook\

Alle anderen Registryzweige, die ich gefunden haben, haben leider keine Auswirkungen, wenn ich diese manuell ändere.
Das wäre das einfachste gewesen.

Vielleicht weiß jemand aus diesem Forum, wo der genaue Speicherort der PST-Dateien liegen, so dass ich einfach die Pfade anpassen kann. Ich denke mit dem Thema hat sich bestimmt schon jemand befasst und vielleicht eine Lösung parat.

Mal gespannt, ob noch was brauchbares kommt.

PS: Für eine Powershell-Lösung wäre ich auch dankbar. Hier kann man sehr viel mit Microsoft Exchange machen. Ob das aber mit dem lokal installierten Outlook auch geht, weiß ich im Moment nicht. Sicher gibt es hier eine Lösung mit dieser mächtigen Skriptsprache.

Liebe Grüße

Thomas
Bitte warten ..
Mitglied: colinardo
11.06.2013 um 14:32 Uhr
Hatte ich doch im letzten Thread schon verlinkt, vielleicht kannst du damit was anfangen:
http://www.vbforums.com/showthread.php?650266-RESOLVED-Modify-PST-locat ...!
Bitte warten ..
Mitglied: thl1966
11.06.2013 um 14:40 Uhr
Der Beitrag ist interessant.

Werde den mal durchlesen und versuchen, ob ich hier Lösungsansätze finde.

Wenn es funktioniert. werde ich die Lösung hier posten.

Danke erst mal für den Link.

Thomas
Bitte warten ..
Mitglied: thl1966
11.06.2013 um 14:48 Uhr
Hallo colinardo,

der Link hat Lösungsansätze bezgl. des Registrykeys, den ich schon gefunden habe.

Weiß leider nicht, mit welchem Wert ich die Funktion aufrufen kann.

Vielleicht kann mir jemand hier noch helfen.

Danke im Voraus.

Gruß
Thomas
Bitte warten ..
Mitglied: thl1966
11.06.2013 um 16:31 Uhr
Der letzte Link ist genial.

Ist zwar in umgekehrter Richtung, aber ich schreibe es um und werde es dann hier posten.

Gruß

Thomas
Bitte warten ..
Mitglied: thl1966
13.06.2013 um 11:25 Uhr
Hallo cainardo,

habe das hinbekommen mit den Outlook-Dateien.

Mein Testskript, ermittelt die PST-Dateien, die in Outlook eingebunden sind und speichert sie in einem Array.

Bei mir werden alle eingebundenen PST-Dateien, die nicht auf C: D: und V: liegen ermittelt und in einem zweiten Array gespeichert.

Dann werden diese verschoben und wieder in Outlook angepasst.
Sobald der Vorgang abgeschlossen ist, erscheint in der Outlook-Konfiguration in den Kontoeinstellungen unter Datendateien die geänderten Konfigurationsdaten z.B. V:\Intern\Outlook

Ein kleiner Schönheitsfehler:

Wenn ein Name in Outlook für die PST benannt wurde z.B. Archiv 2012 und die PST-Datei heißt nur Archiv.pst, dann
wird hier beim Namen Archiv.pst eingetragen.

Habe das im Loginskript eingebaut und die angemeldeten Anwender bekommen einen Hinweis, ob die Dateien verschoben werden. Solange das nicht bejaht wird, kommt die Aufforderung erneut. Ist dies mal ausgeführt, dann kommt dieser Dialog nicht mehr. Hintergrund war, dass die PST-Dateien sehr viel Platz auf einigen Netzlaufwerke belegen und diese wieder mehr Platz benötigen.

Evtl. kann mir jemand noch dabei helfen.

Würde gerne das Skript hier hochladen.

Wie mache ich das korrekt, so dass die Zeilen korrekt angezeigt werden?

Liebe Grüße

Thomas
Bitte warten ..
Mitglied: colinardo
13.06.2013 um 11:28 Uhr
Schön das es geklappt hat.
Wie man Code formatiert steht hier
Grüße Uwe
Bitte warten ..
Mitglied: thl1966
13.06.2013 um 12:02 Uhr
So hier der Code:

01.
  
02.
 
03.
Outlook_PST_verschieben() 
04.
 
05.
Msgbox "Fertig mit dem verschieben der PST-Dateien auf V:\Intern\Outlook" 
06.
 
07.
 
08.
 
09.
Function Outlook_PST_verschieben() 
10.
 
11.
		' ------------------------ 
12.
		' Variablen dimensionieren 
13.
		' ------------------------ 
14.
 
15.
		DIM objFSO, objDatei, objDateien, objQuellOrdner, strQuelle, strZielordner, strNachricht 
16.
		DIM pstArray() 
17.
		DIM Zaehler : Zaehler = 0 
18.
		DIM objOL  
19.
 
20.
		strZielOrdnerPfad	= "V:\Intern\Outlook\" 
21.
 
22.
		SET pstInfo 		= createobject("scripting.Dictionary") 
23.
		SET objOutlook 		= CreateObject("Outlook.Application") 
24.
		SET objOL 			= objOutlook.GetNamespace("MAPI") 
25.
		SET objFSO 			= CreateObject("Scripting.FileSystemObject") 
26.
 
27.
		a = 0 
28.
 
29.
		On Error Resume Next 
30.
 
31.
		' ---------------------------------------------------------------------------- 
32.
		' Lese Alle Outlook PST-Datendateien aus und speiche Sie in dem Array pstArray 
33.
		' ---------------------------------------------------------------------------- 
34.
 
35.
		For Each objFolder In objOL.Session.Folders  
36.
 
37.
			' ---------------------------- 
38.
			' Alle Datemdateien in Outlook 
39.
			' ---------------------------- 
40.
			 
41.
			If not isEmpty(ErmittlePSTPfadReg(objFolder.storeid)) then ' Filtere die leeren Einträge raus 
42.
 
43.
				' ------------------------------------------ 
44.
				' Liefert den PST-Dateipfad als Text zurück! 
45.
				' ------------------------------------------ 
46.
			   
47.
				pstPfad = ErmittlePSTPfadReg(objFolder.storeid)  
48.
				reDIM preserve pstArray(Zaehler) 
49.
				pstArray(Zaehler) = pstPfad 
50.
				Zaehler = Zaehler + 1 
51.
				pstInfo.add pstPfad,objFolder 
52.
			End If 
53.
		Next 
54.
 
55.
		' Msgbox "Anzahl PST-Dateien = " & Zaehler ' Kontrollausgabe 
56.
 
57.
		' ------------------------------------------------------------------------------ 
58.
		' Zähler für Anzahl PST-Dateien außer C: D: V:, die in Outlook eingebunden sind! 
59.
		' ------------------------------------------------------------------------------ 
60.
 
61.
		strAnzahlPSTNetzwerk = 0 
62.
 
63.
		' -------------------- 
64.
		' Zähler für Schleifen 
65.
		' -------------------- 
66.
 
67.
		i = 0 
68.
 
69.
		' ---------------------------------------------------------------------------------------------------------------- 
70.
		' PST-Dateien aus Array auslesen und nur die Netzwerk-PST-Dateien au0er C: D: V: in neuem Array pstNWArray ablegen 
71.
		' ---------------------------------------------------------------------------------------------------------------- 
72.
 
73.
		DIM pstNWArray(40) 
74.
 
75.
				' ------------------------------------------------------------------------- 
76.
				' PST-Dateien, die auf dem C: oder D: oder V: Laufwerk liegen, außschließen 
77.
				' pstArray(a) --> Inhalt z.B.: C:\Temp\Intern\Outlook\MeineDaten.pst 
78.
				' ------------------------------------------------------------------------- 
79.
 
80.
				strAnzahlPSTNetzwerk = 0 
81.
				 
82.
				For i = 0 to Zaehler-1 
83.
					strDateiPfad = pstArray(i) 
84.
					 
85.
					' --------------------------------------------------------------------------------------------------- 
86.
					' Dateipfad aufsplitten, so dass z.B. x= C: oder TEMP oder Intern usw. erscheint (Beispielpfad oben!) 
87.
					' --------------------------------------------------------------------------------------------------- 
88.
 
89.
					x = Left(strDateiPfad, 2) 
90.
					Select Case x 
91.
						Case "C:" ' Nicht unternehmen! 
92.
						Case "D:" ' Nicht unternehmen! 
93.
						Case "V:" ' Nicht unternehmen! 
94.
						Case "H:" 
95.
							pstNWArray(strAnzahlPSTNetzwerk) = strDateiPfad 
96.
							strAnzahlPSTNetzwerk = strAnzahlPSTNetzwerk + 1 
97.
						Case "I:" 
98.
							pstNWArray(strAnzahlPSTNetzwerk) = strDateiPfad 
99.
							strAnzahlPSTNetzwerk = strAnzahlPSTNetzwerk + 1 
100.
						Case "J:" 
101.
							pstNWArray(strAnzahlPSTNetzwerk) = strDateiPfad 
102.
							strAnzahlPSTNetzwerk = strAnzahlPSTNetzwerk + 1 
103.
						Case "K:" 
104.
							pstNWArray(strAnzahlPSTNetzwerk) = strDateiPfad 
105.
							strAnzahlPSTNetzwerk = strAnzahlPSTNetzwerk + 1 
106.
						Case "L:" 
107.
							pstNWArray(strAnzahlPSTNetzwerk) = strDateiPfad 
108.
							strAnzahlPSTNetzwerk = strAnzahlPSTNetzwerk + 1 
109.
						Case "M:" 
110.
							pstNWArray(strAnzahlPSTNetzwerk) = strDateiPfad 
111.
							strAnzahlPSTNetzwerk = strAnzahlPSTNetzwerk + 1 
112.
						Case "N:" 
113.
							pstNWArray(strAnzahlPSTNetzwerk) = strDateiPfad 
114.
							strAnzahlPSTNetzwerk = strAnzahlPSTNetzwerk + 1 
115.
						Case "O:" 
116.
							pstNWArray(strAnzahlPSTNetzwerk) = strDateiPfad 
117.
							strAnzahlPSTNetzwerk = strAnzahlPSTNetzwerk + 1 
118.
						Case "P:" 
119.
							pstNWArray(strAnzahlPSTNetzwerk) = strDateiPfad 
120.
							strAnzahlPSTNetzwerk = strAnzahlPSTNetzwerk + 1 
121.
						Case "Q:" 
122.
							pstNWArray(strAnzahlPSTNetzwerk) = strDateiPfad 
123.
							strAnzahlPSTNetzwerk = strAnzahlPSTNetzwerk + 1 
124.
						Case "R:" 
125.
							pstNWArray(strAnzahlPSTNetzwerk) = strDateiPfad 
126.
							strAnzahlPSTNetzwerk = strAnzahlPSTNetzwerk + 1 
127.
						Case "S:" 
128.
							pstNWArray(strAnzahlPSTNetzwerk) = strDateiPfad 
129.
							strAnzahlPSTNetzwerk = strAnzahlPSTNetzwerk + 1 
130.
						Case "T:" 
131.
							pstNWArray(strAnzahlPSTNetzwerk) = strDateiPfad 
132.
							strAnzahlPSTNetzwerk = strAnzahlPSTNetzwerk + 1 
133.
						Case "U:" 
134.
							pstNWArray(strAnzahlPSTNetzwerk) = strDateiPfad 
135.
							strAnzahlPSTNetzwerk = strAnzahlPSTNetzwerk + 1 
136.
						Case "V:" ' Nicht unternehmen! 
137.
						Case "W:" 
138.
							pstNWArray(strAnzahlPSTNetzwerk) = strDateiPfad 
139.
							strAnzahlPSTNetzwerk = strAnzahlPSTNetzwerk + 1 
140.
						Case "X:" 
141.
							pstNWArray(strAnzahlPSTNetzwerk) = strDateiPfad 
142.
							strAnzahlPSTNetzwerk = strAnzahlPSTNetzwerk + 1 
143.
						Case "Y:" 
144.
							pstNWArray(strAnzahlPSTNetzwerk) = strDateiPfad 
145.
							strAnzahlPSTNetzwerk = strAnzahlPSTNetzwerk + 1 
146.
						Case "Z:" 
147.
							pstNWArray(strAnzahlPSTNetzwerk) = strDateiPfad 
148.
							strAnzahlPSTNetzwerk = strAnzahlPSTNetzwerk + 1 
149.
						 
150.
					End Select 
151.
				Next 
152.
 
153.
		' ------------------------------------------------------------------------ 
154.
		' Jetzt steht in der Variable strAnzahlPSTNetzwerk die Anzahl PST-Dateien, 
155.
		' die aus dem pstNWAray ausgelesen werden kann 
156.
		' Das Array pstNWArray(x) stehen jetzt alle PST-Dateien, die implizit  
157.
		' erlaubt sind zum kopieren-/verschieben auf das Ziellaufwerk 
158.
		' ------------------------------------------------------------------------- 
159.
 
160.
		' Msgbox "Anzahl PST-Dateien, die kopiert-/verschoben werden: " & strAnzahlPSTNetzwerk ' Kontrollausgabe 
161.
 
162.
		' ------------------- 
163.
		' Zähler für Schleife 
164.
		' ------------------- 
165.
 
166.
		i = 0 
167.
 
168.
		' -------------------------------------------------------------------------------- 
169.
		' PST-Datei, die über Select Case ermittelt worden sind anzeigen (Kontrollausgabe) 
170.
		' -------------------------------------------------------------------------------- 
171.
 
172.
		'For i = 0 to strAnzahlPSTNetzwerk-1 
173.
		'	Msgbox pstNWArray(i) 
174.
		'Next 
175.
 
176.
		pstKeys = pstInfo.keys  
177.
 
178.
		' ---------------------------------------------------------- 
179.
		' Selective PST-Dateien außer C: D: V: aus Outlook entfernen 
180.
		' ---------------------------------------------------------- 
181.
 
182.
		For Each key in pstKeys 
183.
 
184.
		' ----------------------------------------------------------------- 
185.
		' Wenn PST-Datei auf dem Netzwerk Freigabelaufwerk gespeichert ist! 
186.
		' ----------------------------------------------------------------- 
187.
 
188.
			If ErmittleLaufwerksTyp(left(key,2)) = "Network" Then  
189.
			  
190.
			 ' --------------------- 
191.
			 ' Netzwerk PST-Dateien! 
192.
			 ' --------------------- 
193.
			 
194.
			' ------------------------------------------------------ 
195.
			 ' PST entladen, sonst kann diese nicht gelöscht werden! 
196.
			 ' ----------------------------------------------------- 
197.
			  
198.
				 objOL.RemoveStore pstInfo.item(key)  
199.
			End if 
200.
		Next 
201.
 
202.
 
203.
 
204.
		' --------------------------------------------------- 
205.
		' Hier kommt die Routine, um die Netzwerk-PST-Dateien  
206.
		' in Laufwerk, Pfad und Datei aufzusplitten 
207.
		' --------------------------------------------------- 
208.
 
209.
 
210.
		i = 0 
211.
 
212.
		For i = 0 to strAnzahlPSTNetzwerk-1 
213.
			 
214.
			' -------------------------------------- 
215.
			' Compare = Vergleichswert bei InStrRev,  
216.
			' 0 = Binärvergleich, 1 = Textvergleich 
217.
			' ------------------------------------- 
218.
			 
219.
			intTextVergleich = 1 
220.
			 
221.
			' ---------------------------------------------------------------------------------------------------------- 
222.
			' Spezifiziert die Startposition für jede Suche. Die Suche beginnt an der Position des letzten Zeichens (-1) 
223.
			' ---------------------------------------------------------------------------------------------------------- 
224.
			 
225.
			Startposition = -1  
226.
			 
227.
			' ------------------------------ 
228.
			' Laufwerksbuchstabe extrahieren 
229.
			' ------------------------------ 
230.
			 
231.
			strLaufwerk = Left(pstNWArray(i),2) 
232.
			 
233.
			' ----------------------------- 
234.
			' nur den Dateiname extrahieren 
235.
			' ----------------------------- 
236.
			 
237.
			strPSTDateiname = Right(pstNwArray(i), Len (pstNwArray(i)) - InStrRev(pstNwArray(i), "\" ,Startposition, intTextVergleich)) 
238.
 
239.
			' -------------------------------------- 
240.
			' Den Pfad ohne den Dateinamen ermitteln 
241.
			' -------------------------------------- 
242.
			 
243.
				' ------------------------------------------ 
244.
				' Zuerst die Länge des Dateinamens ermitteln 
245.
				' ------------------------------------------ 
246.
				 
247.
				intLaenge_Dateiname = Len(strPSTDateiname) 
248.
				 
249.
				' --------------------------------------------------------------------------------- 
250.
				' Der komplette Pfad, ohne den Dateinamen kann jetzt sehr leicht ermittelt werden, 
251.
				' Hierzu einfach erst mal aus dem jeweiligen Kompletten Pfad die Länge des   
252.
				' Dateinamens abziehen und den String extrahieren 
253.
				' --------------------------------------------------------------------------------- 
254.
				 
255.
				intLaengePfad = Len( pstNwArray(i) ) - intLaenge_Dateiname 
256.
				 
257.
		'		Msgbox 	"Pfad+Dateiname: " & pstNwArray(i) & vbCRLF & _ 
258.
		'				"Länge Kompletter Pfad+Dateiname: " & Len(pstNwArray(i)) & vbCRLF & _ 
259.
		'				"Länge Dateiname = " & intLaenge_Dateiname & vbCRLD & _ 
260.
		'				"Laenge Pfad: " & intLaengePfad 
261.
						 
262.
		'	Msgbox strPSTDateiname ' Kontrollanzeige 
263.
			 
264.
			' ------------------------------------------------------------------- 
265.
			' Outlook beenden, sonst schlägt der Verschieben-/Kopiervorgang fehl! 
266.
			' ------------------------------------------------------------------- 
267.
			 
268.
			Prozess_beenden("Outlook.exe") 
269.
			Prozess_beenden("SearchprotocolHost.exe") 
270.
			 
271.
			' ------------------------------------------------------- 
272.
			' Hier kommt die Routine, um die Netzwerk-PST-Dateien auf  
273.
			' das Ziel-PST-Laufwerk zu kopieren-/verschieben 
274.
			' ------------------------------------------------------- 
275.
			 
276.
			SET objQuellOrdner 	= objFSO.GetFolder(pstNwArray(i)) 	' Aktuellen Dateipfad mit Dateiname zuordnen! 
277.
			SET objDateien 		= objQuellOrdner.Files				'  
278.
			 
279.
			For Each objDatei In objDateien 
280.
 
281.
				' Weise strQuelle den kompletten Pfad inkl. PST-Datei (Nur die Dateien außer C: D: V:) zu. 
282.
				 
283.
				strQuelle = pstNwArray(i) 
284.
				 
285.
				' ----------------------------------------------------------------------------------------------------------- 
286.
				' Verschiebe Datei 
287.
288.
				' Anmerkung:  
289.
290.
				' Falls die Datei nicht existiert, dann verschiebe einfach 
291.
				' Wenn die Datei im Zielordner existiert, dann wird ein Fehler ausgegeben (wird abgefangen und unterdrückt!" 
292.
				' Wenn das Ziel nur ein Verzeichnis ist, dann wird ein Fehler ausgegeben (wird abgefangen und unterdrückt!" 
293.
				' ----------------------------------------------------------------------------------------------------------- 
294.
				objFSO.MoveFile strQuelle, strZielOrdnerPfad 
295.
				 
296.
				' ---------------- 
297.
				' Fehlerbehandlung 
298.
				' ---------------- 
299.
				 
300.
				If Err.Number <> 0 Then 
301.
				 
302.
					strNachricht = Err.Description 
303.
 
304.
					Select Case Err.Number 
305.
						Case 58 ' Datei ist bereits vorhanden! 
306.
							' In diesem Fall nichts unternehmen, Datei belassen, wie sie ist 
307.
						Case 76 '  
308.
							' Es wird kein Fehler ausgegeben! 
309.
						Case 450 
310.
							' Falsche Anzahl an Argumenten oder ungültige Eigenschaftszuweisung 
311.
						Case Else 
312.
							' Es wird kein Fehler ausgegeben 
313.
 
314.
					End Select 
315.
				  
316.
					'MsgBox "Fehlercode: " & Err.Number & vbCRLF & "Fehlerbeschreibung: " & strNachricht, 48, "Fehler!" 
317.
					Err.Clear 
318.
				End If 
319.
			Next	 
320.
		Next 
321.
 
322.
		' ----------------------------------------------------------------------- 
323.
		' Vorher entfernte PST-Dateien (in Outlook) wieder in Outlook hinzufügen 
324.
		' Diesmal mit neuem Pfad, so dass bei nächsten Start, diese ohne Probleme 
325.
		' wieder geöffnet werden können! 
326.
		' ------------------------------------------------------------------------ 
327.
 
328.
			' -------------------------- 
329.
			' Zuerst Objekt instanzieren 
330.
			' -------------------------- 
331.
			 
332.
			SET objOutlook = CreateObject("Outlook.Application") 
333.
			SET objOL = objOutlook.GetNamespace("MAPI") 
334.
			wscript.sleep 3000 
335.
 
336.
		i = 0 
337.
 
338.
 
339.
		For Each key in pstKeys 
340.
			' -------------------------------------------------------------------------------------------- 
341.
			' key = Enthält den kompletten Quellpfad inkl. PST-Dateiname z.B.: H:\Outlook-Dateien\Test.pst 
342.
			' -------------------------------------------------------------------------------------------- 
343.
			 
344.
			If 	ErmittleLaufwerksTyp(left(key,2)) = "Network" Then 
345.
			 
346.
				' ---------------------------------------------------------- 
347.
				' strDateiname = Enthält nur den PST-Dateinamen z.B.Test.pst 
348.
				' ---------------------------------------------------------- 
349.
				 
350.
				strDateiname = objFSO.GetBaseName(key) + ".pst" 
351.
				 
352.
				' ----------------------------------------------------------------------------------- 
353.
				' strZieldateiname = Enthält den Pfad+Dateiname z.B.: C:\Temp\Intern\Outlook\Test.pst 
354.
				' ----------------------------------------------------------------------------------- 
355.
				 
356.
				strZieldateiname = strZielOrdnerPfad & strDateiname  
357.
				 
358.
				' ------------------------------------ 
359.
				' In Outlook die Datendatei hinzufügen 
360.
				' ------------------------------------ 
361.
				 
362.
				objOL.AddStore strZieldateiname 
363.
				 
364.
				' ------------------------------------------------------------------------------ 
365.
				' Solange hinzufügen, soviele Dateien, die ermittelt worden sind, außer C: D: V: 
366.
				' ------------------------------------------------------------------------------ 
367.
				 
368.
				i = i + 1 
369.
				If strAnzahlPSTNetzwerk = i then exit for 
370.
				wscript.sleep 500 
371.
			End If 
372.
		Next 
373.
End Function ' Outlook_PST_verschieben() 
374.
 
375.
 
376.
' ---------- 
377.
' Funktionen 
378.
' ---------- 
379.
 
380.
 
381.
Function ErmittleLaufwerksTyp(strLaufwerkstyp)  
382.
 
383.
	' ------------------------------------------------------------------ 
384.
	' Liefert den Typ des Laufwerkes zurück, wo die PST gespeichert ist! 
385.
	' ------------------------------------------------------------------ 
386.
	 
387.
	 strComputer = "." 
388.
	  
389.
	 SET objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") 
390.
	 SET colItems = objWMIService.ExecQuery("Select * from Win32_logicaldisk") 
391.
	  
392.
	 For Each objItem In colItems 
393.
		If objItem.driveType = "4" And  objItem.deviceID = strLaufwerkstyp Then  
394.
			' Netzlaufwerk 
395.
			ErmittleLaufwerksTyp = "Network" 
396.
		ElseIf objItem.driveType = "2" And  objItem.deviceID = strLaufwerkstyp Then  
397.
			' Wechsellaufwerk 
398.
			ErmittleLaufwerksTyp = "Removable" 
399.
		ElseIf objItem.driveType = "3" And  objItem.deviceID = v Then  
400.
			' Lokale Festplatte 
401.
			ErmittleLaufwerksTyp = "Local Disk" 
402.
		End If 
403.
	 Next 
404.
End Function 
405.
 
406.
 
407.
Function ErmittlePSTPfadReg(strPfad) 
408.
 
409.
	' ------------------------------------------------- 
410.
	' Ermittel den Pfad der PST-Datei aus der Reg-Datei 
411.
	' Hier wird kryptische Werte zurück geliefert, die 
412.
	' aber essentiell wichtig sind für den Umzug der 
413.
	' PST-Dateien 
414.
	' Werte werden von objFolder.storeid aus der 
415.
	' Outlook Instanz ermittelt. 
416.
	' Erforderlich: 
417.
418.
	' SET objOL = objOutlook.GetNamespace("MAPI") 
419.
	' ------------------------------------------------- 
420.
 
421.
	For i = 1 To Len(strPfad) Step 2 
422.
		strUnterString = Mid(strPfad,i,2) 
423.
		If Not strUnterString = "00" Then	strPath = strPath & ChrW("&H" & strUnterString) 
424.
	Next 
425.
	  
426.
	Select Case True 
427.
		Case InStr(strPath,":\") > 0 : ErmittlePSTPfadReg = Mid(strPath,InStr(strPath,":\")-1) 
428.
		Case InStr(strPath,"\\") > 0 : ErmittlePSTPfadReg = Mid(strPath,InStr(strPath,"\\")) 
429.
	End Select 
430.
 
431.
End Function 
432.
 
433.
 
434.
Function Prozess_beenden(strProzessname) 
435.
 
436.
' ------------------- 
437.
' Beendet ein Prozess 
438.
' ------------------- 
439.
 
440.
	Set owmi = GetObject("winmgmts:") 
441.
	Set Task = owmi.ExecQuery("select * from win32_process Where Name = '" & strProzessname & "'") 
442.
	Set WshShell = WScript.CreateObject("WScript.Shell") 
443.
 
444.
	WScript.Sleep 1000 ' 1 Sekunde warten 
445.
 
446.
	If IsEmpty(Task) Then 
447.
		WScript.Quit 
448.
	End If 
449.
 
450.
	For Each objekt in Task 
451.
		WshShell.AppActivate(objekt.processID) 
452.
		objekt.Terminate 0  
453.
		Err.Clear 
454.
	Next 
455.
	 
456.
	' ---------------------------------- 
457.
	' Task wieder aus Speicher entfernen	 
458.
	' ---------------------------------- 
459.
	 
460.
	Set Task = owmi.ExecQuery("select * from win32_process Where Name = 'Winmgmt.exe'")  
461.
 
462.
	For Each objekt in Task 
463.
		 WshShell.AppActivate(objekt.processID) 
464.
		 objekt.Terminate 0  
465.
		 Err.Clear 
466.
	 Next 
467.
	 
468.
End Function 
469.
 
470.
 
471.
 
472.
Function ErmittleLaufwerksTyp(strLaufwerkstyp)  
473.
 
474.
	' ------------------------------------------------------------------ 
475.
	' Liefert den Typ des Laufwerkes zurück, wo die PST gespeichert ist! 
476.
	' ------------------------------------------------------------------ 
477.
	 
478.
	 strComputer = "." 
479.
	  
480.
	 SET objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") 
481.
	 SET colItems = objWMIService.ExecQuery("Select * from Win32_logicaldisk") 
482.
	  
483.
	 For Each objItem In colItems 
484.
		If objItem.driveType = "4" And  objItem.deviceID = strLaufwerkstyp Then  
485.
			' Netzlaufwerk 
486.
			ErmittleLaufwerksTyp = "Network" 
487.
		ElseIf objItem.driveType = "2" And  objItem.deviceID = strLaufwerkstyp Then  
488.
			' Wechsellaufwerk 
489.
			ErmittleLaufwerksTyp = "Removable" 
490.
		ElseIf objItem.driveType = "3" And  objItem.deviceID = v Then  
491.
			' Lokale Festplatte 
492.
			ErmittleLaufwerksTyp = "Local Disk" 
493.
		End If 
494.
	 Next 
495.
End Function 
496.
 
497.
 
498.
 
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...