Trabajar con impresoras en Windows

Puede usar PowerShell para administrar impresoras mediante WMI y el objeto COM WScript.Network de WSH. Usaremos una combinación de ambas herramientas para demostrar tareas específicas.

Enumerar las conexiones de impresora

La manera más sencilla de enumerar las impresoras instaladas en un equipo es usar la clase WMI Win32_Printer:

Get-CimInstance -Class Win32_Printer

También puede enumerar las impresoras mediante el objeto COM WScript.Network que suele usarse en los scripts de WSH:

(New-Object -ComObject WScript.Network).EnumPrinterConnections()

Dado que este comando devuelve una colección de cadenas simple de nombres de puerto y nombres de dispositivo de impresión sin ninguna etiqueta distintiva, no es fácil de interpretar.

Agregar una impresora de red

Para agregar una nueva impresora de red, use WScript.Network:

(New-Object -ComObject WScript.Network).AddWindowsPrinterConnection("\\Printserver01\Xerox5")

Establecer una impresora predeterminada

Para usar WMI para establecer la impresora predeterminada, busque la impresora en la colección Win32_Printer y luego invoque el método SetDefaultPrinter:

$printer = Get-CimInstance -Class Win32_Printer -Filter "Name='HP LaserJet 5Si'"
Invoke-CimMethod -InputObject $printer -MethodName SetDefaultPrinter

WScript.Network es un poco más fácil de usar, porque tiene un método SetDefaultPrinter que toma el nombre de la impresora como argumento:

(New-Object -ComObject WScript.Network).SetDefaultPrinter('HP LaserJet 5Si')

Quitar una conexión de impresora

Para quitar una conexión de impresora, use el método WScript.Network RemovePrinterConnection:

(New-Object -ComObject WScript.Network).RemovePrinterConnection("\\Printserver01\Xerox5")