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