Administración de 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, a partir de Windows XP. Hoy vamos a considerar los comandos típicos para instalar, administrar y eliminar impresoras, puertos de impresión, controladores y colas mediante PowerShell. Estas formas de administrar impresoras desde PowerShell CLI se pueden usar 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 colas de impresión, controladores e impresión disponibles en el módulo PrintManagement en Windows 10 (PowerShell v5) con el siguiente comando:
Get-Command -Module PrintManagementAgregar impresora: agregue (instale) una nueva impresora;
Add-PrinterDriver: instale un nuevo controlador de impresión;
-
Add-PrinterPort: crea un puerto de impresión local;
Get-PrintConfiguration: muestra la configuración de la impresora;
Get-Printer: muestra la lista de impresoras instaladas en la computadora;
Get-PrinterDriver: muestra la lista de los controladores instalados;
Get-PrinterPort: muestra la lista de puertos de impresora;
Get-PrinterProperty: muestra las propiedades de la impresora;
Get-PrintJob: obtenga una lista de los trabajos de impresión de la impresora;
Read-PrinterNfcTag: obtenga información de la impresora de la etiqueta NFC;
Remove-Printer: quita la impresora;
Remove-PrinterDriver: elimina el controlador de la impresora;
-
Remove-PrinterPort: quita el puerto de la impresora;
Remove-PrintJob: elimina un trabajo de impresión en la impresora;
Cambiar nombre de impresora: cambiar el nombre de la impresora;
Restart-PrintJob: reinicia el trabajo de impresión;
Resume-PrintJob: reanuda el trabajo de impresión en pausa;
Set-PrintConfiguration: establezca la configuración de la impresora;
Set-Printer: actualiza la configuración de la impresora;
Set-PrinterProperty: cambia las propiedades de la impresora;
Suspender-PrintJob: suspender (pausar) el trabajo de impresión;
Write-PrinterNfcTag: escribe información en la etiqueta NFC.
Para obtener información detallada sobre la sintaxis de cualquier comando, utilice el siguiente comando:
Get-Help <cmdlet_name> -DetailedEjemplos de uso de comandos:
Get-Help < cmdlet_name> -ExamplesVeamos algunos ejemplos de tareas típicas de administración de impresoras con PowerShell en Windows 10.
Adición de controladores de impresora a DriverStore
Para enumerar los controladores de impresión que están instalados en Windows DriverStore:
Get-PrinterDriverLuego, 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 debe ser el siguiente:
Add-PrinterDriver -Name "HP Universal Printing PCL 6" -InfPath "C:\Distr\HP-pcl6-x64\hpcu118u.inf"Sin embargo, al intentar instalar un controlador de esta manera, aparece el siguiente mensaje de error:
Add-PrinterDriver : One or more specified parameters for this operation has an invalid value.At line:1 char: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-PrinterDriverResulta 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 VBS descrito en el artículo anterior;
la utilidad: pnputil.exe. El comando puede tener el siguiente aspecto:
pnputil.exe -i -a C:\Distr\HP-pcl6-x64\hpcu118u.inf(instala el controlador de impresora específico) o
pnputil.exe -i -a C:\Distr\HP-pcl6-x64\*.inf(instala todos los controladores que se encuentran en los archivos INF en el directorio especificado);
el cmdlet Add-WindowsDriver que permite integrar controladores en la imagen de Windows sin conexión.
Después de agregar un controlador de impresora al depósito de controladores, debe instalarlo en el servidor de impresión:
Add-PrinterDriver -Name "HP Universal Printing PCL 6"Consejo. ¿Cómo averiguar 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 encontrar el nombre correcto del controlador usando el comando get-printerdriver en una computadora donde este controlador de impresión ya está instalado, o examinando manualmente el archivo .inf del controlador.
¿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" -PublishedNota: tenga en cuenta que para realizar la misma operación (instalar y compartir una impresora) utilizando secuencias de comandos VBS (secuencias de comandos 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”.
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-PrinterComo 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.
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 equipos remotos (servidores de impresión). El nombre de la computadora o servidor remoto se especifica como un argumento del parámetro -ComputerName.
Puede obtener información sobre las impresoras instaladas en una computadora remota usando el comando PowerShell:
Get-Printer -ComputerName rome-prnt1 | Format-List Name,DriverNamePara mostrar solo una lista de impresoras compartidas, use el comando:
Get-Printer -ComputerName rome-prnt1 | where Shared -eq $true | fl NameConexión a una impresora compartida en red con PowerShell
Para conectar la impresora compartida desde el servidor de impresión, use el comando:
Add-Printer -ConnectionName \\rome-prnt1\HP3027Windows 10 usa la impresora más reciente que se usó para imprimir como impresora predeterminada. Si desea utilizar una impresora predeterminada fija, ejecute el comando:
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows" -Name "LegacyDefaultPrinterMode" -Value 1 -ForcePara configurar la impresora predeterminada, puede usar los siguientes comandos:
$wsnObj = New-Object -COM WScript.Network
$wsnObj.SetDefaultPrinter(%PrinterName%)¿Cómo quitar una impresora usando 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"







