Nach Druckservermigration Drucker am Client umziehen

Nachdem man – hoffentlich – erfolgreich einen Druckserver von einem Windows-Server auf einen anderen umgezogen hat ist der nächste Schritt die Umstellung auf den Clients. Wenn ich nicht Gruppenrichtlinien zur Druckerzuordnung verwenden kann verwende ich ein VB-Sript um die Drucker des Benutzers umzuziehen. Wenn der Benutzer das Script ausführt – entweder über eine Gruppenrichtlinie verteilt oder per login-script – werden die alten Drucker gelöscht und die Drucker automatisch über den neuen Druckserver verbunden – inklusive das setzten des Standarddruckers.

Bitte beachten: Die Freigabenamen der Drucker auf dem alten und auf dem neuen Druckserver müssen gleich sein. Falls es die für den alten Drucker verwendete Freigabe auf dem neuen Druckserver nicht gibt wird der Drucker gelöscht.

Hier das Script – die Variablen from_sv und to_sv anpassen und als .vbs abspeichern

Option Explicit
Dim from_sv, to_sv, PrinterPath, PrinterName, DefaultPrinterName, DefaultPrinter
Dim DefaultPrinterServer, SetDefault, key
Dim spoint, Loop_Counter, scomma
Dim WshNet, WshShell
Dim WS_Printers
DefaultPrinterName = ""
spoint = 0
scomma = 0
SetDefault = 0
set WshShell = CreateObject("WScript.shell")

from_sv = "\\sv-alt" 'Der alte Druckserver.
to_sv = "\\sv-neu" 'Der neue Druckserver.

On Error Resume Next
key = "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows\Device"
DefaultPrinter = LCase(WshShell.RegRead (key))

If Err.Number <> 0 Then
	DefaultPrinterName = ""
else
spoint = instr(3,DefaultPrinter,"\")+1

DefaultPrinterServer = left(DefaultPrinter,spoint-2)

	if lcase(DefaultPrinterServer) = from_sv then
		DefaultPrinterName = mid(DefaultPrinter,spoint,len(DefaultPrinter)-spoint+1)
		scomma = instr(DefaultPrinterName,",")
		DefaultPrinterName = left(DefaultPrinterName,scomma -1)
	end if
end if

Set WshNet = CreateObject("WScript.Network")
Set WS_Printers = WshNet.EnumPrinterConnections

For Loop_Counter = 0 To WS_Printers.Count - 1 Step 2
	PrinterPath = lcase(WS_Printers(Loop_Counter + 1))

	if lcase(LEFT(PrinterPath,len(from_sv))) = from_sv then
		spoint = instr(3,PrinterPath,"\")+1
		PrinterName = mid(PrinterPath,spoint,len(PrinterPath)-spoint+1)
		WshNet.RemovePrinterConnection from_sv+"\"+PrinterName
		if lcase(PrinterName) <> "c6100" then
			WshNet.AddWindowsPrinterConnection to_sv+"\"+PrinterName
			if DefaultPrinterName = PrinterName then
				WshNet.SetDefaultPrinter to_sv+"\"+PrinterName
			end if
		end if
	end if
Next
Set WS_Printers = Nothing
Set WshNet = Nothing
Set WshShell = Nothing

' wscript.echo "Drucker migriert"

Wenn man das Script z.B. in einem Logon-Script beim Anmelden des Benutzers ausführen lässt, muss man in der Login-BAT bzw. CMD die Zeile

cscript //nologo drucker-migrieren.vbs

einfügen.

Dann werden beim anmelden alle Drucker automatisch umgezogen.

Funktionierte bei mir schon bei einigen Migrationen wunderbar 🙂

Quelle: https://gallery.technet.microsoft.com/

2 Gedanken zu “Nach Druckservermigration Drucker am Client umziehen

  • 22. Oktober 2019 um 16:48
    Permalink

    Hallo,
    Ihr Script ist leider fehlerhaft, da größer und kleiner als leider im HTML Code angezeigt werden.
    Bei der Verwendung Ihres Scripts kommt es daher leider zu einem Parsing Error in Zeile 20.

    Antworten
    • 31. Oktober 2019 um 10:50
      Permalink

      Hallo, auf was für einem System?
      Ich hab das früher unter Windows7 verwendet -> unter Windwos10 würde ich das immer per GPO machen bzw. hab ich das Script noch nicht getestet…

      Antworten

Kommentar verfassen