Powershell-Skript zum Entfernen freigegebener Drucker, falls vorhanden

Powershell-Skript zum Entfernen freigegebener Drucker, falls vorhanden

tut mir leid, dass ich frage, Leute, aber ich brauche Hilfe, um das zu bekommen. Ich habe einige Drucker auf vielen Computern installiert, wie \Server\Drucker. Ich dachte daran, sie mit einem Powershell-Skript zu entfernen, aber das klappt nicht. Ich dachte an so etwas wie das hier:

$printers=Get-Printer | where { $_.Type -eq 'Connection'} | select name /* this part show me only \\server\printers */
$printers | ForEach-Object {
    if ($printers) {
            Remove-Printer -Name $printers -Confirm:$false
    }
}

Vielen Dank im Voraus an alle.

Antwort1

Das liegt daran, dass Sie dem Cmdlet Remove-Printer die gesamte Druckerliste bereitstellen. Sie müssen jeweils einen Drucker angeben.

[...]
Remove-Printer -Name $printers -Confirm:$false
# Error here------------/\
[...]

Sie befinden sich in der ForEach-Schleife. Sie können den aktuellen Drucker abrufen, indem Sie $PSItemoder den Kurzalias verwenden $_. $PSItem(und $_) bedeutet „das aktuelle Objekt in der ForEach-Schleife“

Das sollte funktionieren:

$printers=Get-Printer | where { $_.Type -eq 'Connection'} | select name /* this part show me only \\server\printers */
$printers | ForEach-Object {
    if ($_) {
            Remove-Printer -Name $_.Name -Confirm:$false
    }
}

verwandte Informationen