Migracion de colas de impresion con Power shell

Buenas tardes

Hoy me gustaría compartir con vosotros este script de power Shell de cosecha propia que nos permite cambiar el mapeo de la impresora desde un servidor de impresión1 a un servidor de impresión2.

Cuando nos enfrentamos a una migración de un servidor de impresión suele ser bastante sencillo migrar las colas de impresión desde el servidor origen al servidor destino incluso cuando los mismos corren bajo sistemas operativos diferentes. Aunque no sea el objetivo principal de este artículo si quiere mencionar de manera rápida que para migrar las colas del servidor de impresión tan solo es necesario abrir print management console en el servidor destino, incluir el servidor origen, hacer un export de su configuración para finalizar haciendo un import de la configuración en el servidor destino.

Sin embargo si es un trabajo bastante más tedioso recorrer los puestos de los usuarios y eliminar la colas de impresión apuntando al servidor antiguo y dar de alta las colas apuntando el servidor nuevo. Para dar solución a este problemática ejecutaremos el siguiente script de power Shell medinte gpos a todos nuestros usuarios y seremos capaces incluso de mantener la impresora por defecto. Lo único que deberemos editar son los nombres del servidor origen y destino.

Espero que os resulte de utilidad.

# Set computer name
$Computer = «localhost»
# Set print servers names
$OldPrintServer = «oldserver»
$NewPrintServer = «newserver»
# Get printer information
$Printers = Get-WMIObject Win32_Printer -computername $Computer
foreach ($Printer in $Printers)
{
$strprintername = [string]$Printer.Name
if ($strprintername.Contains($OldPrintServer))
{
if ($Printer.Default -eq $False)
{
#it isn´t the default printer
# Remove old printer connection
$oldprinter = New-Object -ComObject «Wscript.Network»
$oldprinter.RemovePrinterConnection($Printer.Name)
# Create the new printer connection
$newprintername = «\\» + $NewPrintServer + «\» + $Printer.Name.TrimStart(«\\» + $OldPrintServer + «\»)
$newprinter = New-Object -ComObject «Wscript.Network»
$newprinter.AddWindowsPrinterConnection($newprintername)
}
else
{
#it is the default printer
# Remove old printer connection
$oldprinter = New-Object -ComObject «Wscript.Network»
$oldprinter.RemovePrinterConnection($Printer.Name)
# Create the new printer connection
$newprintername = «\\» + $NewPrintServer + «\» + $Printer.Name.TrimStart(«\\» + $OldPrintServer + «\»)
$newprinter = New-Object -ComObject «Wscript.Network»
$newprinter.AddWindowsPrinterConnection($newprintername)
# Set as default
$newprinter.SetDefaultPrinter($newprintername)
}

}
}

Samuel López posted at 2014-5-29 Category: Articulos IT