Trabajar con impresoras en Windows

Este ejemplo solo se aplica a las plataformas Windows.

Puede usar PowerShell para administrar impresoras mediante WMI y el objeto COM WScript.Network de WSH.

Enumeración de 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.

Adición de una impresora de red

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

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

Establecimiento de 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')

Eliminación de 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")