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.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$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"
$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"
$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