Powershell – Druckerrechte interaktiv kopieren

Möchte man als Admin seine Druckerrechte nicht immer einzeln pro Drucker setzen, so kann man diese mit diesem interaktiven Skript von einem auf andere Drucker kopieren.

$server = "druckservername"
if (!$server) {
	write-warning "Kein Server gesetzt"
	break
}
$Error.Clear()
$allPrinters = get-printer * -full -ComputerName $server
if($Error) {
	write-error "Server konnte nicht ausgelesen werden"
	break
}
write-host "Gewünschter Drucker dessen Rechte 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 "Drucker auswählen in die die Rechte eingefügt werden sollen"
write-host -NoNewline "Soruce`t`tDestination`n$($selectedPrinterSource.ShareName) -> "
$selectedPrinterDestination = $allPrinters | Out-GridView -PassThru -Title "Auf welche Drucker sollen die Rechte ü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-Printer -PermissionSDDL $selectedPrinterSource.PermissionSDDL -InputObject $printer
	if($Error) {
		$errorCount++
		write-host -NoNewline "`n"
		write-error "Rechte 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"

Schreibe einen Kommentar