We’re in 2011 – and who would have thought printer migration still would have sucked so much!
Hopefully this post will help it suck a little less for some of you.
My migration situation:
Moving from Novell and iPrint to 2008 R2 (as part of a bigger AD migration project)
Printer drivers and definitions are handled via iPrint, but because the place im doing this for use re-charging software (papercut) the actual printer queues still live on a windows server 2003 R2 box, sitting in a workgroup
My migration steps:
1) Create a Windows 2008 R2 print server in the domain, add the appropriate print server roles
2) add a local account on each of the workgroup print servers, with the same credentials as my domain account – allowing pass-through authentication to work. Ensure this account is a member of the local administrators group
3) Ensure at least one printer is shared via traditional windows print sharing (you may need to restart the print spooler after this)
4) On the 2008 R2 print server, open the print management console and add each of the workgroup print servers. You’ll notice you can see the drivers, ports etc, but not the printer queues themselves
5) If you were to export/import now, you would get a whole bunch of crap drivers – and importantly (assuming your source server is x86) your x86 and x64 driver will likely not match up. this is because the driver name must be exactly the same for both architechture
6) In order to get around this nightmare, you have a couple of options:
a) Import both the x86 and x64 driver into the source server before you migrate – this is time consuming and annoying
b) Ensure you have a matching x64 driver on the “new” print server, this is also time consuming and annoying
c) Update the print queues to use a single driver, ensure the x64 version is available on the “new” server….
in order to do this, you can use a script such a this one, which will update all HP and Ricoh printers to use their Universal driver… the upside of this driver is that both x86 and 64 drivers have the same name – meaning that the printers will migrate nicely. In addition, it means you only have 4 print drivers to maintain. (ofcourse the universal driver may lack some specific functionality, in which case, still migrate using it, and change the driver once it is on 2008 R2 server)
strComputer = “.”
Set objWMIService = GetObject(“winmgmts:\” & strComputer & “rootcimv2”)
Set colItems = objWMIService.ExecQuery(“Select * from Win32_Printer”,,48)
For Each objItem in colItems
Wscript.Echo “Printer Name: ” & objItem.Name
Wscript.Echo “Driver: ” & objItem.DriverName
If instr(UCASE(objItem.DriverName),”HP”) Then
Wscript.echo “Updating a HP printer to use universal driver…”
objItem.DriverName = “HP Universal Printing PCL 6″
If instr(UCASE(objItem.DriverName),”RICOH”) Then
Wscript.echo “Updating a Ricoh printer to use universal driver…”
objItem.DriverName = “PCL6 Driver for Universal Print”
7) Export the printers from the “old” print server
8) Add the universal drivers for x86 and x64 onto the new print server
9) Import the printers onto the “new” print server
For other maintenance tasks, there are plenty of example scripts available at the technet script centre, or just use scriptotatic to find the wmi property you want to update, and pipe in your properties via your favourite method.