Viele Drucker speichern ihre Drucktreibereinstellungen in einer Art XML Format. Dies kann man nutzen um die Einstellungen von einem auf einen anderen Drucker mit gleichen Treiber zu kopieren.
Daher frägt das Skript von welchem Drucker die Einstellungen kopiert werden soll und schlägt danach vor auf welche Drucker (mit dem gleichen Treiber) die Einstellungen eingefügt werden können. Hierbei lassen sich alle möglichen Einstellungen kopieren. Von Farbe, über Duplex, Papierfach, Qulaität…
#Druckservername $server = "srvprt1" if (!$server) { write-warning "Kein Server gesetzt" break } $Error.Clear() $allPrinters = get-printer * -ComputerName $server if($Error) { write-error "Server konnte nicht ausgelesen werden" break } write-host "Gewünschter Drucker dessen Eigenschaften kopiert werden soll wählen" $selectedPrinterSource = $allPrinters | Out-GridView -OutputMode Single -Title "Von welchem Drucker soll kopiert werden?" if (!$selectedPrinterSource) { write-warning "Kein Drucker gewählt" break } write-host "Lese Druckerkonfiguration ein" $selectedSettings = Get-PrintConfiguration $selectedPrinterSource #Lade die gewünschte Drucker Konfiguration if (!$selectedSettings) { Write-Error "Die Einstellungen des Druckers konnten nicht ausgelesen werden" break } #Printer nur mit gleichem Treiber vorschlagen $equalDriverPrinter = @() foreach($printer in $allPrinters) { if($printer.DriverName -eq $selectedPrinterSource.DriverName) { $equalDriverPrinter += $printer } } write-host "Drucker auswählen in die die Eigenschaften eingefügt werden sollen" write-host -NoNewline "Soruce`t`tDestination`n$($selectedPrinterSource.ShareName) -> " $selectedPrinterDestination = $equalDriverPrinter | Out-GridView -PassThru -Title "Auf welche Drucker sollen die Daten übertragen werden?" if (!$selectedPrinterDestination) { write-host "`n" #Zeilenumbruch, damit die Warnung auch wirklich in der neuen Zeile ist write-warning "Kein Zieldrucker gewählt" break } $errorCount = 0 $successCount = 0 foreach($printer in $selectedPrinterDestination) { write-host -NoNewline "$($printer.ShareName) " $Error.Clear() Set-PrintConfiguration -PrintTicketXml $selectedSettings.PrintTicketXML $printer if($Error) { $errorCount++ write-host -NoNewline "`n" write-error "Einstellungen für Drucker $($printer.ShareName) konnte auf Server $server nicht angepasst werden" } else { $successCount++ } } Write-Host "`n$successCount Drucker erfolgreich angepasst" Write-Host "$errorCount Anpassungen fehlgeschlagen"