скрипт powershell для удаления общих принтеров, если они существуют

скрипт powershell для удаления общих принтеров, если они существуют

Извините, ребята, за вопрос, но мне нужна помощь. У меня есть несколько принтеров, установленных на многих компьютерах, таких как \server\printer. Я думал удалить их с помощью скрипта powershell, но не могу этого сделать. Я думал о чем-то вроде этого:

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

Заранее всем спасибо.

решение1

Это потому, что вы предоставляете весь список принтеров командлету Remove-Printer. Вам нужно предоставить один принтер за раз.

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

Вы находитесь внутри цикла foreach, вы можете получить текущий принтер, используя $PSItemили короткий псевдоним $_. $PSItem$_) означает «текущий объект в цикле ForEach»

Это должно сработать:

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

Связанный контент