script de PowerShell para eliminar impresoras compartidas si existen

script de PowerShell para eliminar impresoras compartidas si existen

Perdón por preguntar chicos, pero necesito ayuda para entender esto. Tengo algunas impresoras instaladas en muchas computadoras como \server\printer. Estaba pensando en eliminarlos con un script de PowerShell pero no puedo hacerlo. Estaba pensando en algo como esto:

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

Gracias de antemano a todos.

Respuesta1

Esto se debe a que está proporcionando la lista completa de impresoras al cmdlet Remove-Printer. Debe proporcionar una impresora a la vez.

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

Está dentro del bucle foreach, puede obtener la impresora actual usando $PSItemo el alias corto $_. $PSItem(y$_ ) significa "el objeto actual en el bucle ForEach"

Esto debería 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
    }
}

información relacionada