Letzte Aktualisierung am 12.10.2024, 09:10:50 Uhr
Wir haben im Unternehmen mehrere Printserver am Start. In den nächsten Wochen steht eine Migration von Windows Server 2008 auf Windows Server 2012R2 an.
Der Umzug der Drucker auf dem Server selber ist ein Kinderspiel im Vergleich zu dem was alle Clients angeht.
Die Kolleginnen und Kollegen mit einer kl. Anleitung manuell die Drucker löschen zu und die neuen wieder verbinden lassen, wird wahrscheinlich die Supportanfragen in die Höhe treiben und viele stehen mit der IT-Welt auf Kriegsfuß.
Per Batch die Drucker an den Clients auszulesen und wieder zu verbinden ist machbar. Ich habe dazu auch ein längeres Skript gefunden. leider ist Batch nicht meine Stärke und es aus unserer Sicht Fehler anfällig.
Eine echte Alternative ist inzwischen PowerShell. Die Sprache ist sehr mächtig und vieles lässt sich damit inzwischen automatisieren. Warum also auch nicht die Druckermigration auf allen Arbeitsplatzsystemen. Voraussetzung ist mindestens PowerShell Version 1 auf dem Rechner installiert ist.
Das Skript war in einem halben Tag geschrieben und getestet:
$strNewPrintserver = "printserver01.xzy.de" # Prüft, ob das Skript bei diesem Benutzer bereits gelaufen ist If (-not (Test-Path "C:\Temp$env:USERNAME-printers.txt")) { Write-Host "Druckermigration wird gestartet..." # Alle Drucker auslesen, die als Netzwerkdrucker markiert sind Get-WMIObject Win32_Printer | where{$_.network -eq "true"} | Select ShareName, Default, Name | ForEach { # Ausgabe Freigabename $_.ShareName # Ausgabe Standarddrucker $_.Default # Drucker löschen (New-Object -ComObject WScript.Network).RemovePrinterConnection($_.Name) # Neue Drucker anlegen $printer = [WMIClass]"\\.\root\cimv2:Win32_Printer" $printer.AddPrinterConnection("\\" + $strNewPrintserver + "\" + $_.Sharename) # Standarddrucker einrichten if($_.Default -eq $true) { $printer = Get-WmiObject Win32_Printer | ? { $_.name -like "\\" + $strNewPrintserver +"\" + $_.Sharename } $printer.SetDefaultPrinter() } } # Ausgabe write-host "Fertig" | Out-File "C:\Temp$env:USERNAME-printers.txt" }
Quelle: Git Repository
Läuft unter Microsoft Windows Professional/Enterprise 7, Serivce Pack 1 (32Bit und 64Bit) problemlos. Falls Fehler gefunden werden, schreibt mir einen Kommentar.
[…] habe vor über 1 1/2 Jahren bereits solch ein Skript hier veröffentlicht. Was ich damals nicht berücksichtigt habe war, dass der Drucker sowohl mit dem […]