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 :
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