5

As per subject.

I've found some ways of scripting printer creation on Windows print servers using WMI, but it looks like WMI doesn't support clustered print servers (or clustered servers at all).

The scripts in C:\Windows\System32\Printing_Admin_Scripts are useless because, they are not cluster-aware and end up creating the printers on the active cluster node (just like using WMI).

The only tool I found that was able to work on a clustered print server is printui.exe (shortcut for rundll32 printui.dll, PrintUIEntry), but it can't create TCP printing ports: it can only add printers if the port already exists.

How can I completely script printer creation (including TCP printing ports!) on a clustered Windows Server 2008 R2 print server?

Massimo
  • 72,827

4 Answers4

1

I don't know if this will work in a cluster enviornment, but there is the good old printbrm.exe tool. It creates what is essentially a cab file full of XML that can backup and restore printer setups between servers. This includes the dreaded TCP/IP ports. This might let you do a simple backup, modify the XML to add what you need and let you do a restore to your cluster. (Again, not sure if this is cluster aware).

Printbrm example: http://technet.microsoft.com/en-us/library/cc722360.aspx

rename the file to .cab and extract to disk...

The port file is brmports.xml. I suggest exporting out a printer or two to see how it is "supposed" to look.

MikeAWood
  • 2,586
0

The only way I was able to create ports first was with VBS and then use printui after the fact:

Set objWMIService = GetObject("winmgmts:")
Set objNewPort = objWMIService.Get _
("Win32_TCPIPPrinterPort").SpawnInstance_
objRAWPort.Name = "IP_192.168.1.2"
objRAWPort.Protocol = 1
objRAWPort.HostAddress = "192.168.1.2"
objRAWPort.PortNumber = "9100"
objRAWPort.Put_

Set objWMIService2 = GetObject("winmgmts:")
Set objNewPort2 = objWMIService2.Get _
("Win32_TCPIPPrinterPort").SpawnInstance_
objLPRPort.Name = "IP_192.168.1.3"
objLPRPort.Protocol = 2
objLPRPort.HostAddress = "192.168.1.3"
objLPRPort.Queue = "MyQueue"
objLPRPort.ByteCount = True
objLPRPort.Put_

cmd = "rundll32 printui.dll,PrintUIEntry /if /b "PRINTER NAME" /f %windir%\inf\ntprint.inf /r "IP_192.168.1.2" /m "HP Color LaserJet 4550 PS" /Z

objCommandShell.Run cmd,,True

Might have some errors there but its the general idea.

Ryan
  • 161
-1

Have you seen this GPO setting?

Computer Configuration > Preferences > Control Panel Settings > Printers. Then right clicking going to New > TCP/IP Printer

Not familiar with cluster print servers, but that should work for you for TCP/IP print mapping.

Nixphoe
  • 4,624