A customer was running an old 2003 as a print server and we were migrating to 2008 R2. The old Print Migrator 3.1 is a big no-no and it will probably crash your spooler – here’s why.
After adding the role Print and Document Services -> Print Server role, you can simply right-click and choose Migrate Printers… and the wizard will allow you to export printers from a local or remote server to a file and then simply import it afterwards:
But if you want more control and more features, use PRINTBRM.EXE in C:\Windows\system32\spool\tools\.
To export from a remote server to a file named printers.printerExport, simply run:
PrintBrm.exe -B -S \\OLDSERVER -F printers.printerExport
If you want to check what’s in the exported file afterwards:
PrintBrm.exe -Q -F PRINTERS.printerExport
And to restore the printers to the local server:
PrintBrm.exe -R -F PRINTERS.printerExport
Now, so far pretty basic stuff. But usually, when you get a new shiny printer server installed, maybe you want to update all the printer drivers? Maybe even some drivers can’t be installed on 2008 R2. So maybe you want to start fresh but you still don’t want to add all printers (with share) and ports manually but you’re OK with adding the drivers manually?
One feature when exporting is to add the -nobin. This will export everything except the binaries (drivers). If you would import that straight away, you would get a lot of errors:
Failed to restore print queue PRINTERNAME. Error 0x80070705 ...and... PRINTERNAME Error: 0x80070705 The printer driver is unknown. ...and... HP LaserJet 4, Windows NT x86, None Error: 0x80070057 The parameter is incorrect.
What you can do then is to manually install the drivers and create a “drivemap” where you tell the import that instead of using the driver in the export file, it will add the printer with a new driver. What you need is a configfile, by default it will use BrmConfig.xml. In the following example you will see it will replace the Ricoh PCL5e driver with the PCL6 and also replace the HP LaserJet4 with the RICOH PCL6 (which is less likely to work.. but for this demo it’ll do :)).
<BrmConfig> <PLUGINS> </PLUGINS> <LanguageMonitors> </LanguageMonitors> <DriverMap> <DRV old="RICOH Aficio MP 161 PCL 5e" new="RICOH Aficio MP 161 PCL 6"/> <DRV old="HP LaserJet 4" new="RICOH Aficio MP 161 PCL 6"/> </DriverMap> </BrmConfig>
Then at import, use the -C to specify your config file:
PrintBrm.exe -R -F printers.printerExport -C BrmConfig.xml
You will then notice, while restoring, it will instead of failed to restore print queue get:
Restored print queue PRINTERNAME
When you check the installed printer you will notice it has used the replacement driver.
And while you’re at it, read some Best Practices. Oh and don’t forget, sometimes you need to run the cmd.exe as an Administrator.
Happy printing!
I used this tool and it failed on all the drivers. (Error: 0x80070705 The Printer Driver is unknown)
What did I miss? I did a twice, once with the GUI once from the command line. Command line errored out on “The Specificed printer monitor is unknown”. Only 2 printers of 146 were created.
Any ideas so I don’t have to recreate 146 printer from scratch?
Strange. Is this TCP/IP Printer ports or something else? Maybe there’s something that haven’t been installed on the 2008 R2 that you’ve missed and maybe the 2 printers that did work didn’t use TCP/IP printer ports?
Hi, thanks for the nice Article. I think the steadyPRINT Migrator ist that tool you are looking for. Best Regards
Excellent article and EXACTLY what I was looking forward. Worked perfectly! Thank you.
Hello,
I’ve encountering a strange problem.
I did all like described but when I restore the printserver import the driver automatically (is like he don’t care of the .xml file!)
I’ve also tryied to set new=”Generic / Text Only” , but it catch everytime the correct driver (because I’ve installed the driver family pack on the server) … I can write wathever I want into the .xml file.