Administrar impresoras y controladores con PowerShell en Windows 10 / Server 2016

En el artículo anterior, analizamos los scripts VBS de la vieja escuela que se pueden usar para administrar impresoras y operaciones de impresión en todas las versiones de Windows, comenzando desde Windows XP. Hoy vamos a considerar los comandos típicos para instalar, administrar y eliminar impresoras, puertos de impresión, controladores y colas usando PowerShell. Estas formas de administrar impresoras desde PowerShell CLI se pueden utilizar en sistemas operativos modernos: Windows 10 / 8.1 y Windows Server 2019/2016/2012 R2.

Módulo de PowerShell: PrintManagement

Junto con el lanzamiento de Windows 8.1 y Windows Server 2012 R2, Microsoft lanzó una nueva versión de PowerShell 4.0 (una parte de Windows Management Framework 4.0), que amplió significativamente la lista de cmdlets de administración de servidores de impresión basados ​​en Windows. Puede obtener la lista completa de cmdlets de administración de impresión, controladores y colas de impresión disponibles en el módulo PrintManagement en Windows 10 (PowerShell v5) con el siguiente comando:

Get-Command –Module PrintManagement

El módulo PrintManagement incluye 22 cmdlets de PowerShell para administrar impresoras, controladores, puertos de impresión y colas:

  • Agregar impresora – agregar (instalar) una nueva impresora;
  • Agregar controlador de impresora – instalar un nuevo controlador de impresión;
  • Agregar puerto de impresora – crear puerto de impresión local;
  • Get-PrintConfiguration – mostrar la configuración de la impresora;
  • Obtener impresora – mostrar la lista de impresoras instaladas en la computadora;
  • Get-PrinterDriver – mostrar la lista de controladores instalados;
  • Get-PrinterPort – muestra la lista de puertos de impresora;
  • Get-PrinterProperty – mostrar las propiedades de la impresora;
  • Get-PrintJob – obtener una lista de trabajos de impresión de la impresora;
  • Leer-PrinterNfcTag – obtener información de la impresora de la etiqueta NFC;
  • Quitar impresora – quitar la impresora;
  • Remove-PrinterDriver – eliminar el controlador de la impresora;
  • Remove-PrinterPort – quitar el puerto de la impresora;
  • Remove-PrintJob – eliminar un trabajo de impresión en la impresora;
  • Cambiar nombre de impresora – cambiar el nombre de la impresora;
  • Reiniciar-PrintJob – reiniciar el trabajo de impresión;
  • Resume-PrintJob – reanudar el trabajo de impresión en pausa;
  • Set-PrintConfiguration – establecer la configuración de la impresora;
  • Set-Impresora – actualizar la configuración de la impresora;
  • Set-PrinterProperty – cambiar las propiedades de la impresora;
  • Suspender-PrintJob – suspender (pausar) el trabajo de impresión;
  • Write-PrinterNfcTag – escribir información en la etiqueta NFC.

Para obtener información detallada sobre la sintaxis de cualquier comando, use el siguiente comando:

Get-Help <cmdlet_name> -Detailed

Ejemplos de uso de comandos:

Get-Help < cmdlet_name> -Examples

Veamos algunos ejemplos de tareas típicas de administración de impresoras que utilizan PowerShell en Windows 10.

Agregar controladores de impresora a DriverStore

Para enumerar los controladores de impresión que están instalados en Windows DriverStore:

Get-PrinterDriver

Luego, instale un nuevo controlador de impresora en el sistema. Por ejemplo, desea instalar el popular controlador de impresión “HP Universal Printing PCL 6”. Según la documentación, el comando de PowerShell para agregar un controlador de impresión debería ser el siguiente:

Add-PrinterDriver -Name "HP Universal Printing PCL 6" -InfPath "C:DistrHP-pcl6-x64hpcu118u.inf"

Sin embargo, al intentar instalar un controlador de esta manera, aparece el siguiente mensaje de error:

Add-PrinterDriver: Uno o más parámetros especificados para esta operación tienen un valor no válido. En la línea: 1 carácter: 1+ Add-PrinterDriver -Name “HP Universal Printing PCL 6” -InfPath “C: Di… + ~~~~ ~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: InvalidArgument: (MSFT_PrinterDriver: ROOT / StandardCimv2 / MSFT_PrinterDriver) [Add-PrinterDriver], CimException + FullyQualifiedErrorId: HRESULT 0x80070057, Add-PrinterDriver

error luego de instalar el controlador de impresión usando el cmdlet de PowerShell Add-PrinterDriver

Resulta que el controlador del archivo INF solo se puede instalar si ya existe en DriverStore. Parece que no puede instalar un controlador de impresión que no esté en el almacén de controladores mediante el comando Add-PrinterDriver. Para agregar un controlador a DriverStore, puede usar:

  • el script de VBS descrito en el artículo anterior;
  • la utilidad – pnputil.exe. El comando puede tener el siguiente aspecto: pnputil.exe -i -a C:DistrHP-pcl6-x64hpcu118u.inf (instala el controlador de impresora específico) o pnputil.exe -i -a C:DistrHP-pcl6-x64*.inf (instala todos los controladores que se encuentran en los archivos INF en el directorio especificado);pnputil: instala el controlador de impresión en la tienda de controladores
  • el cmdlet Agregar controlador de Windows que permite integrar controladores en la imagen de Windows sin conexión.

Después de agregar un controlador de impresora al repositorio de controladores, debe instalarlo en el servidor de impresión:

Add-PrinterDriver -Name "HP Universal Printing PCL 6"

Add-PrinterDriver PowerShell

Consejo. ¿Cómo saber qué debe especificar en el campo del nombre del controlador de impresión al instalar el controlador a través de PowerShell? El nombre del controlador de impresión especificado debe coincidir exactamente con el nombre del sistema interno; de lo contrario, aparecerá un error durante la instalación del controlador. Puede averiguar el nombre correcto del controlador utilizando el get-printerdriver comando en una computadora donde este controlador de impresión ya está instalado, o examinando manualmente el archivo .inf del controlador.nombre del controlador de impresión en el archivo inf

¿Cómo instalar la impresora usando PowerShell?

Cree un puerto IP para una impresora de red (aquí puede especificar tanto la dirección IP de la impresora de red como el nombre del servidor de impresión remoto):

Add-PrinterPort -Name "IP_192.168.10.26" -PrinterHostAddress "192.168.10.26"

Antes de agregar un nuevo puerto de impresión IP, puede verificar si existe:

$portName = "IP_192.168.10.26"
$checkPortExists = Get-Printerport -Name $portname -ErrorAction SilentlyContinue
if (-not $checkPortExists) {
Add-PrinterPort -name $portName -PrinterHostAddress "192.168.10.26"
}

Con la ayuda del siguiente comando, instalaremos y compartiremos una nueva impresora en la computadora:

Add-Printer -Name hp3027_Office1_Buh -DriverName "HP LaserJet M3027 MFP PCL6 Class Driver" -PortName IP_192.168.10.26 -Shared -ShareName "hp3027_1_BUh" –Published

instalar impresora de red con puerto ip

Nota: Tenga en cuenta que para realizar la misma operación (instalar y compartir una impresora) utilizando scripts VBS (scripts de administración de impresión), debe realizar dos comandos diferentes.

Después de ejecutar estos comandos, aparecerá en el sistema una nueva impresora compartida con el nombre “hp3027_Office1”.

show-printers-windows8

Para cambiar el nombre de la impresora, simplemente ejecute el comando:

Rename-Printer -Name "hp3027_1_Buh" -NewName "hp3027_F1_Salary"

Lista de impresoras instaladas en un servidor de impresión

Vamos a mostrar la lista completa de impresoras instaladas en esta computadora:

Get-Printer

Como puede ver, el comando muestra el nombre de la impresora, el tipo (local o de red), el controlador, el puerto de impresión, si la impresora está compartida y publicada en Active Directory.

Get-Printer: enumere las impresoras locales con powershell

La mayoría de los cmdlets de PrintManagement se pueden usar para ver el estado y administrar impresoras, controladores y colas de impresión en computadoras remotas (servidores de impresión). El nombre de la computadora o servidor remoto se especifica como un argumento de la -Nombre del computador parámetro.

Puede obtener información sobre las impresoras instaladas en una computadora remota usando el comando de PowerShell:

Get-Printer -ComputerName rome-prnt1 | Format-List Name,DriverName

Para mostrar solo una lista de impresoras compartidas, use el comando:

Get-Printer -ComputerName rome-prnt1 | where Shared -eq $true | fl Name

Conexión a una impresora compartida de red con PowerShell

Para conectar la impresora compartida desde el servidor de impresión, use el comando:

Add-Printer -ConnectionName \rome-prnt1HP3027

Windows 10 usa la última impresora que se usó para imprimir como impresora predeterminada. Si desea utilizar una impresora predeterminada fija, ejecute el comando:

Set-ItemProperty -Path "HKCU:SOFTWAREMicrosoftWindows NTCurrentVersionWindows" -Name "LegacyDefaultPrinterMode" -Value 1 –Force

Para configurar la impresora predeterminada, puede utilizar los siguientes comandos:

$wsnObj = New-Object -COM WScript.Network
$wsnObj.SetDefaultPrinter(%PrinterName%)

¿Cómo quitar una impresora con PowerShell?

Para eliminar una impresora, debe ejecutar el siguiente comando de PowerShell:

Remove-Printer -Name "hp3027_L1_O1"

Puede eliminar un controlador específico mediante el cmdlet Remove-PrinterDriver:

Remove-PrinterDriver -Name "HP Universal Printing PCL 6"

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *