Printer Server migration from Windows 2003 to Windows 2016

Recently, I was assigned with a printer server migration project from Windows Server 2003 to Windows Server 2016.

The difficult thing was that, I couldn’t find any article which explains about the migration from 32-bit architecture to 64-bit architecture. May be I am not that good in googling.

My task was to migrate 100+ printers from windows server 2003 to windows server 2016 with all configurations.

First thought which came to my mind was to export all printers settings (Printer name, driver name, model, printer port name, printer port IP, printer share name etc.) to a text file using the inbuilt vb scripts in windows and then format it to a CSV file.
With the CSV file as source, PowerShell can be used to add printers to the new server using Add-PrinterPort and Add-Printer command-lets. I was able to migrate the printers to new server with the Name, share name, port, comments, location etc. But I was stuck at paper size. I was not able to set custom size(Height and Width) for the label printers.

Here the only change was – the driver name was different for existing printers in windows server 2003 and the new package for windows server 2016. So I had to change the printer driver name in PowerShell accordingly

After some thought process, I thought of printer migration tools. But there was some difficulty, it was for backup and restore of printers within windows server 2003.
Then I tried with Print Management tool in windows 2016, connected the print management mmc to windows server 2003, exported the printer’s and … import failed.

Then I used PrintBrm.exe to export the printer’s and import failed again. 🙁

The issue was with the driver “name” as mentioned above.

  • Windows 2003 : Driver name – Zebra GK420t
  • Windows 2016 : Driver name – ZDesigner GK420t

Below are the steps which I followed to migrate the printers from Windows Server 2003 to Windows Server 2016


Add new driver to windows server 2003

Added the latest driver to windows 2003 to match the driver name. In the list of printer drivers, the new name was available.


Change existing printer driver to newly installed driver

For ease of login, both old and new servers local administrator id and password is set to same.
From windows server 2016, Following PowerShell script was run to change the drivers in Windows 2003.

$Windows2003Name = "PRNSVR2003"
#Fetch all printers having driver name starting with Z, i.e. Zebra
$printers = Get-printer -ComputerName $Windows2003Name | where {$_.DriverName -like "Z*"} 
foreach($prns in $printers) 
{	#iterating through each printer and changing the driver name to new drivers
   if($prns.DriverName -like "Zebra  GK420t*")
        Set-Printer -ComputerName $Windows2003Name -Name $prns.Name -DriverName "ZDesigner GK420t"
   elseif($prns.DriverName -like "Zebra  TLP2844-Z*")
        Set-Printer -ComputerName $Windows2003Name -Name $prns.Name -DriverName "ZDesigner TLP 2844-Z"

While the script is running, we can see the driver getting changed in the windows 2003 server printer console


Backup printers from old server

From Windows 2016, run printer migration tool – PrintBrm.exe
Open command prompt and run the following

cd %WinDir%\System32\Spool\Tools
printbrm.exe -s \\PRNSVR2003 -b -f Win2003Printer.printerExport


Restore printers to new server

Double click the above created file to import the printers with all settings.

That’s it! All your printers are in the new server.

Thank you for reading my post. Hope it is helpful to you.