
68154
04.08.2008, aktualisiert am 18.10.2012
Änderung von Servernamen per Batch nach Neuinstallation von Druckern auf einem neuen Printserver
Wir müssen einen Printserver austauschen, da sein Alter sich auf die Stabilität auswirkt...
Nachdem wir die Drucker ( ca. 30 oder mehr, kann ich im Moment nicht sagen ) auf dem neuen Printserver installiert haben, müssen wir unseren Mitarbeitern möglichst einfach die Drucker umstellen können ( in Windows ). Dies würden wir gerne über einen Batch machen den wir an diese Mitarbeiter verteilen würden. Dieser Batch soll einfach den Pfad mit dem alten Servernamen durch den Pfad mit dem neuen Servernamen ersetzten. Die Bezeichnungen der einzelnen Drucker wird sich nicht ändern.
Leider habe ich nach intensiver Suche keinen Batch mit solchen Möglichkeiten gefunden.
Desshalb ist meine Frage ob dies realisierbar ist und ob ihr bereits von so einem Batch wisst.
Unsere Mitarbeiter sind User und sehr verstreut, desshalb wäre dies die einfachste Lösung.
Vielen Dank für eure Aufmerksamkeit und ich freue mich schon auf konstruktive Anregungen.
Nachdem wir die Drucker ( ca. 30 oder mehr, kann ich im Moment nicht sagen ) auf dem neuen Printserver installiert haben, müssen wir unseren Mitarbeitern möglichst einfach die Drucker umstellen können ( in Windows ). Dies würden wir gerne über einen Batch machen den wir an diese Mitarbeiter verteilen würden. Dieser Batch soll einfach den Pfad mit dem alten Servernamen durch den Pfad mit dem neuen Servernamen ersetzten. Die Bezeichnungen der einzelnen Drucker wird sich nicht ändern.
Leider habe ich nach intensiver Suche keinen Batch mit solchen Möglichkeiten gefunden.
Desshalb ist meine Frage ob dies realisierbar ist und ob ihr bereits von so einem Batch wisst.
Unsere Mitarbeiter sind User und sehr verstreut, desshalb wäre dies die einfachste Lösung.
Vielen Dank für eure Aufmerksamkeit und ich freue mich schon auf konstruktive Anregungen.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 93550
Url: https://administrator.de/forum/aenderung-von-servernamen-per-batch-nach-neuinstallation-von-druckern-auf-einem-neuen-printserver-93550.html
Ausgedruckt am: 22.04.2025 um 20:04 Uhr
6 Kommentare
Neuester Kommentar

Hi,
wir hatten 2003 auch einmal die gleiche Umstellung wie Du. Für den Benutzer hatten wir folgendes Script benutzt. Kannst Du auch im Login Script einbauen, da ein Registry Eintrag erzeugt wird, der bei jedem Ausführen überprüft wird, ob schon einmal gelaufen. Das Script musst Du natürlich an Deine Bedürfnisse noch anpassen.
Gruß
Stefan
Option Explicit
Dim Text, i, PS1, PS2, PS3, PS4, PS5, PS6, nPS1, nPS2, nPS3, nPS4, nPS5, nPS6
Dim drucker, server, tempname, fso, fi2, message, intro, def_printer, old_def_printer, error_meldung, reg_eintrag
Dim WshNetwork, WshShell, oDevices ' Objektvariable
Const ForWriting = 8 ' 2 = Write und 8 = anhängen
Set WshShell = WScript.CreateObject("WScript.Shell")
' Erstelle neues WshNetwork-Objekt, welches man zum Zugriff
' auf die Netzwerk-Eigenschaften brauchen.
Set WshNetwork = WScript.CreateObject("WScript.Network")
On error resume next
if WshShell.RegRead("HKCU\Software\Shortcut\chgPrinter\chgPrinterVersion") <> "100" Then
Select Case err.number
Case 0
error_meldung = " Registryeintrag vorhanden " & vbCRLF
Case -2147024894
error_meldung = " Registryeintrag fehlt " & vbCRLF
Case Else
error_meldung = " Unbekannter Fehler: Code " & Err.Number & " Bezeichnung : " & Err.Description & vbCRLF
End Select
' Alte Druckserver
PS1 = "DE-MANN-PRINT1"
PS2 = "DE-MANN-PRINT2"
PS3 = "DE-MANN-PRINT3"
PS4 = "DE-MANN-PRINT4"
PS5 = "DE-MANN-PRINT5"
PS6 = "DE-MANN-PRINT6"
' Neue Druckserver
nPS1 = "DE-MANN-PS1"
nPS2 = "DE-MANN-PS2"
nPS3 = "DE-MANN-PS3"
nPS4 = "DE-MANN-PS4"
nPS5 = "DE-MANN-PS5"
nPS6 = "DE-MANN-PS6"
intro = "Es werden jetzt ihre installierten Drucker auf andere Druckserver umgestellt." &vbCRLF &vbCRLF
intro = intro + "Die Drucker auf den Servern DE-MANN-PRINT(X) werden jetzt auf die Drucker, der Server DE-MANN-PS(X) umgestellt." &vbCRLF &vbCRLF
intro = intro + "Bereits umgestellte Drucker werden erkannt." &vbCRLF &vbCRLF
msgBox intro, vbInformation, "Druckerumstellung"
def_printer = WshShell.RegRead("HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows\Device")
old_def_printer = Split(def_printer, ",", -1, 1)
'msgBox "Alter Default Printer = : " & old_def_printer(0)
def_printer = Replace(ucase(old_def_printer(0)), "PRINT", "PS", 1, 1, 1)
'msgBox "Neuer Default Printer = : " & def_printer
' Schreiben der Logdatei "Printer.txt" in "C:\"
Set fso = CreateObject("Scripting.FileSystemObject")
Set fi2 = fso.OpenTextFile("C:\PRINTER.TXT", ForWriting, true) ' Ausgabedatei
' Jetzt die Zuordnungen auflisten
Set oDevices = WshNetwork.EnumPrinterConnections
' Überschrift der Ausgabe
Text = vbCRLF &" Zusammenfassung der Druckerzuordnungen" & vbCRLF
Text = text &"-----------------------------------------------------------------------" & vbCRLF & vbCRLF
fi2.WriteLine "------------S T A R T ----D R U C K E R U M S T E L L U N G -----------" & vbCRLF
fi2.Writeline "Datum = " & Date & " Uhrzeit = " & time & vbCRLF
fi2.Writeline "Computername = " & WshNetwork.ComputerName & vbCRLF & "Benutzername = " & WshNetwork.UserName & vbCRLF
fi2.Writeline "Old Default Printer = " & old_def_printer(0) & vbCRLF
fi2.WriteLine "-----------------------------------------------------------------------" & vbCRLF
' Untertitel der Ausgabe
Text = text & " Die alten Druckerzuordnungen lauteten:" & vbCRLF & vbCRLF
text = text & "Old Default Printer = " & old_def_printer(0) & vbCRLF
' Ermitteln der alten (aktuell) definierten Druckerobjekte
For i = 0 To oDevices.Count-1 Step 2
' Ausgabe bei jedem Durchlauf ergänzen
Text = " " & Text & oDevices(i) & " " & oDevices(i+1) & vbCRLF
' Variable splitten wo ein \ vorkommt
tempname = Split(oDevices(i+1), "\", 2, 1)
for each server in tempname
' Variable abermals splitten wo ein \ vorkommt, damit Server und Drucker übrig bleibt
drucker = Split(server, "\", -1, 1)
' Prüfen welcher Printserver gefunden wurde
if Instr(1, ucase(server), PS1, 1) Then
' Druckerzuordnung zu neuem Server herstellen
WshNetwork.AddWindowsPrinterConnection "\\"&nPS1&"\"&drucker(2)
' Druckerzuordnung löschen
WshNetwork.RemovePrinterConnection "\\"&PS1&"\"&drucker(2)
end if
if Instr(1, ucase(server), PS2, 1) Then
' Druckerzuordnung zu neuem Server herstellen
WshNetwork.AddWindowsPrinterConnection "\\"&nPS2&"\"&drucker(2)
' Druckerzuordnung löschen
WshNetwork.RemovePrinterConnection "\\"&PS2&"\"&drucker(2)
end if
if Instr(1, ucase(server), PS3, 1) Then
' Druckerzuordnung zu neuem Server herstellen
WshNetwork.AddWindowsPrinterConnection "\\"&nPS3&"\"&drucker(2)
' Druckerzuordnung löschen
WshNetwork.RemovePrinterConnection "\\"&PS3&"\"&drucker(2)
end if
if Instr(1, ucase(server), PS4, 1) Then
' Druckerzuordnung zu neuem Server herstellen
WshNetwork.AddWindowsPrinterConnection "\\"&nPS4&"\"&drucker(2)
' Druckerzuordnung löschen
WshNetwork.RemovePrinterConnection "\\"&PS4&"\"&drucker(2)
end if
if Instr(1, ucase(server), PS5, 1) Then
' Druckerzuordnung zu neuem Server herstellen
WshNetwork.AddWindowsPrinterConnection "\\"&nPS5&"\"&drucker(2)
' Druckerzuordnung löschen
WshNetwork.RemovePrinterConnection "\\"&PS5&"\"&drucker(2)
end if
if Instr(1, ucase(server), PS6, 1) Then
' Druckerzuordnung zu neuem Server herstellen
WshNetwork.AddWindowsPrinterConnection "\\"&nPS6&"\"&drucker(2)
' Druckerzuordnung löschen
WshNetwork.RemovePrinterConnection "\\"&PS6&"\"&drucker(2)
end if
Select Case err.number
Case 0
message = " Info: Druckervorgang " & "\\"&server&"\"&drucker(2) & " erfolgreich durchgeführt." & vbCRLF
'fi2.WriteLine message
Case -2147023688
message = " Fehler: Drucker " & "\\"&server&"\"&drucker(2) & " existiert nicht." & vbCRLF
'fi2.WriteLine message
Case Else
message = "Unbekannter Fehler: Code " & Err.Number & " " & Err.Description & vbCRLF
fi2.WriteLine message
End Select
next
Next
' Abermals die neuen Druckereinstellungen auslesen
Set oDevices = WshNetwork.EnumPrinterConnections
' Ausgabetext definieren
Text = " " & Text & vbCRLF &vbCRLF & " Die neuen Druckerzuordnungen lauten jetzt:" & vbCRLF &vbCRLF
' Ermitteln der alten (aktuell) definierten Druckerobjekte
For i = 0 To oDevices.Count-1 Step 2
Text = " " & Text & oDevices(i) & " " & oDevices(i+1) & vbCRLF
Next
' Default Printer setzen
WshNetwork.SetDefaultPrinter def_printer
text = text & "New Default Printer = " & def_printer & vbCRLF
MsgBox Text, vbOkonly + vbInformation
fi2.WriteLine Text & "----------------------------------------------------" & vbCRLF & error_meldung
fi2.WriteLine " " & vbCRLF & vbCRLF & "--------------------------- E N D E --------------------------------" & vbCRLF
'In Registry schreiben, um bei jedem Start zu prüfen ob schon gelaufen
WshShell.RegWrite "HKCU\Software\shortcut\chgPrinter\chgPrinterVersion", "100"
Set fi2 = Nothing
else
' msgBox "Fehlermeldung = : " & err.Number
' MsgBox "Ist schon gelaufen"
WScript.Quit
end if
WScript.Quit
wir hatten 2003 auch einmal die gleiche Umstellung wie Du. Für den Benutzer hatten wir folgendes Script benutzt. Kannst Du auch im Login Script einbauen, da ein Registry Eintrag erzeugt wird, der bei jedem Ausführen überprüft wird, ob schon einmal gelaufen. Das Script musst Du natürlich an Deine Bedürfnisse noch anpassen.
Gruß
Stefan
Option Explicit
Dim Text, i, PS1, PS2, PS3, PS4, PS5, PS6, nPS1, nPS2, nPS3, nPS4, nPS5, nPS6
Dim drucker, server, tempname, fso, fi2, message, intro, def_printer, old_def_printer, error_meldung, reg_eintrag
Dim WshNetwork, WshShell, oDevices ' Objektvariable
Const ForWriting = 8 ' 2 = Write und 8 = anhängen
Set WshShell = WScript.CreateObject("WScript.Shell")
' Erstelle neues WshNetwork-Objekt, welches man zum Zugriff
' auf die Netzwerk-Eigenschaften brauchen.
Set WshNetwork = WScript.CreateObject("WScript.Network")
On error resume next
if WshShell.RegRead("HKCU\Software\Shortcut\chgPrinter\chgPrinterVersion") <> "100" Then
Select Case err.number
Case 0
error_meldung = " Registryeintrag vorhanden " & vbCRLF
Case -2147024894
error_meldung = " Registryeintrag fehlt " & vbCRLF
Case Else
error_meldung = " Unbekannter Fehler: Code " & Err.Number & " Bezeichnung : " & Err.Description & vbCRLF
End Select
' Alte Druckserver
PS1 = "DE-MANN-PRINT1"
PS2 = "DE-MANN-PRINT2"
PS3 = "DE-MANN-PRINT3"
PS4 = "DE-MANN-PRINT4"
PS5 = "DE-MANN-PRINT5"
PS6 = "DE-MANN-PRINT6"
' Neue Druckserver
nPS1 = "DE-MANN-PS1"
nPS2 = "DE-MANN-PS2"
nPS3 = "DE-MANN-PS3"
nPS4 = "DE-MANN-PS4"
nPS5 = "DE-MANN-PS5"
nPS6 = "DE-MANN-PS6"
intro = "Es werden jetzt ihre installierten Drucker auf andere Druckserver umgestellt." &vbCRLF &vbCRLF
intro = intro + "Die Drucker auf den Servern DE-MANN-PRINT(X) werden jetzt auf die Drucker, der Server DE-MANN-PS(X) umgestellt." &vbCRLF &vbCRLF
intro = intro + "Bereits umgestellte Drucker werden erkannt." &vbCRLF &vbCRLF
msgBox intro, vbInformation, "Druckerumstellung"
def_printer = WshShell.RegRead("HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows\Device")
old_def_printer = Split(def_printer, ",", -1, 1)
'msgBox "Alter Default Printer = : " & old_def_printer(0)
def_printer = Replace(ucase(old_def_printer(0)), "PRINT", "PS", 1, 1, 1)
'msgBox "Neuer Default Printer = : " & def_printer
' Schreiben der Logdatei "Printer.txt" in "C:\"
Set fso = CreateObject("Scripting.FileSystemObject")
Set fi2 = fso.OpenTextFile("C:\PRINTER.TXT", ForWriting, true) ' Ausgabedatei
' Jetzt die Zuordnungen auflisten
Set oDevices = WshNetwork.EnumPrinterConnections
' Überschrift der Ausgabe
Text = vbCRLF &" Zusammenfassung der Druckerzuordnungen" & vbCRLF
Text = text &"-----------------------------------------------------------------------" & vbCRLF & vbCRLF
fi2.WriteLine "------------S T A R T ----D R U C K E R U M S T E L L U N G -----------" & vbCRLF
fi2.Writeline "Datum = " & Date & " Uhrzeit = " & time & vbCRLF
fi2.Writeline "Computername = " & WshNetwork.ComputerName & vbCRLF & "Benutzername = " & WshNetwork.UserName & vbCRLF
fi2.Writeline "Old Default Printer = " & old_def_printer(0) & vbCRLF
fi2.WriteLine "-----------------------------------------------------------------------" & vbCRLF
' Untertitel der Ausgabe
Text = text & " Die alten Druckerzuordnungen lauteten:" & vbCRLF & vbCRLF
text = text & "Old Default Printer = " & old_def_printer(0) & vbCRLF
' Ermitteln der alten (aktuell) definierten Druckerobjekte
For i = 0 To oDevices.Count-1 Step 2
' Ausgabe bei jedem Durchlauf ergänzen
Text = " " & Text & oDevices(i) & " " & oDevices(i+1) & vbCRLF
' Variable splitten wo ein \ vorkommt
tempname = Split(oDevices(i+1), "\", 2, 1)
for each server in tempname
' Variable abermals splitten wo ein \ vorkommt, damit Server und Drucker übrig bleibt
drucker = Split(server, "\", -1, 1)
' Prüfen welcher Printserver gefunden wurde
if Instr(1, ucase(server), PS1, 1) Then
' Druckerzuordnung zu neuem Server herstellen
WshNetwork.AddWindowsPrinterConnection "\\"&nPS1&"\"&drucker(2)
' Druckerzuordnung löschen
WshNetwork.RemovePrinterConnection "\\"&PS1&"\"&drucker(2)
end if
if Instr(1, ucase(server), PS2, 1) Then
' Druckerzuordnung zu neuem Server herstellen
WshNetwork.AddWindowsPrinterConnection "\\"&nPS2&"\"&drucker(2)
' Druckerzuordnung löschen
WshNetwork.RemovePrinterConnection "\\"&PS2&"\"&drucker(2)
end if
if Instr(1, ucase(server), PS3, 1) Then
' Druckerzuordnung zu neuem Server herstellen
WshNetwork.AddWindowsPrinterConnection "\\"&nPS3&"\"&drucker(2)
' Druckerzuordnung löschen
WshNetwork.RemovePrinterConnection "\\"&PS3&"\"&drucker(2)
end if
if Instr(1, ucase(server), PS4, 1) Then
' Druckerzuordnung zu neuem Server herstellen
WshNetwork.AddWindowsPrinterConnection "\\"&nPS4&"\"&drucker(2)
' Druckerzuordnung löschen
WshNetwork.RemovePrinterConnection "\\"&PS4&"\"&drucker(2)
end if
if Instr(1, ucase(server), PS5, 1) Then
' Druckerzuordnung zu neuem Server herstellen
WshNetwork.AddWindowsPrinterConnection "\\"&nPS5&"\"&drucker(2)
' Druckerzuordnung löschen
WshNetwork.RemovePrinterConnection "\\"&PS5&"\"&drucker(2)
end if
if Instr(1, ucase(server), PS6, 1) Then
' Druckerzuordnung zu neuem Server herstellen
WshNetwork.AddWindowsPrinterConnection "\\"&nPS6&"\"&drucker(2)
' Druckerzuordnung löschen
WshNetwork.RemovePrinterConnection "\\"&PS6&"\"&drucker(2)
end if
Select Case err.number
Case 0
message = " Info: Druckervorgang " & "\\"&server&"\"&drucker(2) & " erfolgreich durchgeführt." & vbCRLF
'fi2.WriteLine message
Case -2147023688
message = " Fehler: Drucker " & "\\"&server&"\"&drucker(2) & " existiert nicht." & vbCRLF
'fi2.WriteLine message
Case Else
message = "Unbekannter Fehler: Code " & Err.Number & " " & Err.Description & vbCRLF
fi2.WriteLine message
End Select
next
Next
' Abermals die neuen Druckereinstellungen auslesen
Set oDevices = WshNetwork.EnumPrinterConnections
' Ausgabetext definieren
Text = " " & Text & vbCRLF &vbCRLF & " Die neuen Druckerzuordnungen lauten jetzt:" & vbCRLF &vbCRLF
' Ermitteln der alten (aktuell) definierten Druckerobjekte
For i = 0 To oDevices.Count-1 Step 2
Text = " " & Text & oDevices(i) & " " & oDevices(i+1) & vbCRLF
Next
' Default Printer setzen
WshNetwork.SetDefaultPrinter def_printer
text = text & "New Default Printer = " & def_printer & vbCRLF
MsgBox Text, vbOkonly + vbInformation
fi2.WriteLine Text & "----------------------------------------------------" & vbCRLF & error_meldung
fi2.WriteLine " " & vbCRLF & vbCRLF & "--------------------------- E N D E --------------------------------" & vbCRLF
'In Registry schreiben, um bei jedem Start zu prüfen ob schon gelaufen
WshShell.RegWrite "HKCU\Software\shortcut\chgPrinter\chgPrinterVersion", "100"
Set fi2 = Nothing
else
' msgBox "Fehlermeldung = : " & err.Number
' MsgBox "Ist schon gelaufen"
WScript.Quit
end if
WScript.Quit