¿Existe una forma rápida y sencilla de instalar cada impresora desde un servidor de impresión a través de una consola como PowerShell?
Add-Printer de PowerShell no admite comodines.
Lo probé con Get-Printer y ForEach
Get-Printer -ComputerName print-server | Select name > Printers.txt
ForEach ($Printer in Get-Content "Printers.txt")
{
Add-Printer -ConnectionName \\print-server\"$Printer"
}
Pero solo recibo el mensaje de que el nombre del servidor no es accesible o no es válido. En powershlel se ve que $Printer no se reemplazó con el nombre de impresión. Pero cuando uso Write-Host $Printer, esto funciona.
Respuesta1
En lugar de conectar las impresoras a un archivo de texto y luego intentar usarlas leyéndolas nuevamente como cadenas básicas, use las propiedades de los objetos devueltos por Get-Printer.
P.EJ:
# Get list of printers from computer "print-server".
$Printers = Get-Printer -ComputerName print-server
# Iterate through the returned list of printers.
ForEach ($Printer in $Printers)
{
# Check to see if the current printer is shared or not.
If ($Printer.Shared) {
# If it's shared, add it by using the print server name and printer name properties of the current printer object.
Add-Printer -ConnectionName "\\$($Printer.ComputerName)\$($Printer.Name)"
}
}
Respuesta2
Para que el script funcione correctamente, una impresora en el servidor de impresión seleccionado deberá tener todos los permisos necesarios agregados. La impresora en cuestión (SelectPrinter) se utilizará en el script para extraer la configuración de seguridad.
(Get-Printer 'SelectPrinter' Full).PermissionSDDL | Out-File 'C:\PrinterSecurity.txt' | $perms = Get-Content 'C:\PrinterSecurity.txt' | Set-Printer '*' -PermissionSDDL $perms.
Esto agregará los permisos a todas las impresoras existentes en el servidor de impresión en cuestión.
Ejecute el comando localmente desde el servidor de impresión.