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