script do PowerShell para remover impressoras compartilhadas, se existirem

script do PowerShell para remover impressoras compartilhadas, se existirem

desculpe por perguntar pessoal, mas preciso de ajuda para conseguir isso. Eu tenho algumas impressoras instaladas em muitos computadores como \server\printer. Eu estava pensando em removê-los com um script do PowerShell, mas não consigo fazer isso. Eu estava pensando em algo assim:

$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
    }
}

Desde já agradeço a todos.

Responder1

Isso ocorre porque você está fornecendo a lista completa de impressoras ao cmdlet Remove-Printer. Você deve fornecer uma impressora por vez.

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

Você está dentro do loop foreach, pode obter a impressora atual usando $PSItemou o alias curto $_. $PSItem(e $_) significa "o objeto atual no loop ForEach"

Isso deve funcionar:

$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
    }
}

informação relacionada