VBS zum automatischen umziehen der lokalen Druckerverbindungen

Problem :

Der Name des Printservers hat sich geändert , jetzt kann man zu Fuß an alle Clients gehen und die Drucker umstellen oder man nimmt dieses Skript ins Loginskript auf und das erledigt einem diese Aufgabe ....

Skript :

Option Explicit

Dim ObjWsh 		: Set ObjWsh = CreateObject("WScript.Shell")
Dim ObjNet   	: Set ObjNet = CreateObject("WScript.Network")
Dim ObjFso   	: Set ObjFso = CreateObject("Scripting.FileSystemObject")
Dim objEnv   	: Set objEnv = ObjWsh.Environment("Process")
Dim Logfile  	: Logfile = objEnv("USERPROFILE") & "\PrtUmzug.txt"
Dim objNetPr,NPR,DUMMY,ToDo,Zeile,Inhalt,Entry,Printer_New,OLDSERVER,NEWSERVER

OLDSERVER = "SERVERALT"   ' ----------------------------> Hier den Namen des alten Printservers eintragen
NEWSERVER = "SERVERNEU"   ' ----------------------------> Hier den Namen des neuen Printservers eintragen

' ------------------ routine
WScript.Echo ""
WScript.Echo "-----------------------------------------------------"
If Not ObjFso.FileExists(Logfile) then
WScript.Echo "|-> Ihre Druckerverbindungen werden überprüft & korrigiert"
Inhalt = GetPrinterNames()
WriteLog Logfile,Inhalt
ReadLog Logfile
Else
WScript.Echo "|-> Druckerverbindungen wurden bereits überprüft"
End If
WScript.Echo "-----------------------------------------------------"
WScript.Quit (1)
' ------------------ funktionen
Function GetPrinterNames() 				'--- liest die verbundenen Netzwerkdrucker aus
  Set objNetPr = ObjNet.EnumPrinterConnections
  For NPR = 0 to objNetPr.Count - 1 Step 2
    If Left(objNetPr.Item(NPR + 1),2) = "\\" then
      If DUMMY = "" then
        DUMMY = "NPR|" & objNetPr.Item(NPR) & "|" & objNetPr.Item(NPR + 1)
      Else
        DUMMY = DUMMY & vbCrLf & "NPR|" & objNetPr.Item(NPR) & "|" & objNetPr.Item(NPR + 1)
      End If
    End If
  Next 
  GetPrinterNames = DUMMY
  DUMMY = ""
  Set objNetPr = nothing
End Function
Function SetPrinterNames(Line) 			'--- verbindet einen Netzwerkdrucker
	On Error Resume Next
	Entry = split(Line,"|")
	If UBound(Entry) = 2 Then
		Printer_New = Replace(lcase(Entry(2)),OLDSERVER,NEWSERVER)
		ObjNet.RemovePrinterConnection Entry(2)
		ObjNet.AddWindowsPrinterConnection Printer_New
	End If
End Function
Function ReadLog(File) 					'--- überprüft ob Logfile existiert wenn ja liet Datei aus und spielt gesicherte Einträge zurück
	If ObjFso.FileExists(File) Then
		Set Dummy = ObjFso.OpenTextFile(File)
			Do Until Dummy.AtEndOfStream
				Zeile = trim(Dummy.Readline)
				SetPrinterNames(Zeile)
			Loop
	End If
End Function
Function WriteLog(File,Content) 		'--- löscht die Datei wenn vorhanden und erstellt eine aktualisierte
  If ObjFso.FileExists(File) Then
    ObjFso.DeleteFile(File)
  End If
  Dim ObjLogFile : Set ObjLogFile = ObjFso.OpenTextFile(File,8,true)
  ObjLogFile.WriteLine (Content)
  Set ObjLogFile = Nothing
End Function
“Das einzig sichere System müsste ausgeschaltet, in einem versiegelten und von Stahlbeton ummantelten Raum und von bewaffneten Schutztruppen umstellt sein.”
Gene Spafford (Sicherheitsexperte)