Извините, ребята, за вопрос, но мне нужна помощь. У меня есть несколько принтеров, установленных на многих компьютерах, таких как \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
}
}