Once you have discovered how to create one network printer, it is relatively straightforward to add a second or third printer. Apply techniques you acquire in one area to another area. For
example, once you learn how to map multiple network drives, then apply that knowledge to create multiple printers, or vica versa.
Our mission is to map not one, but two (or more) printers. As
VBScripts go, this is a straightforward script and an ideal vehicle for beginners to learn the structure of this language. Nevertheless, there are instructive pointers for all levels of ability. I
have divided our mission into three stages, 1) Map one printer, 2) Map multiple printers, 3) Set the default printer.
Pre-Requisites
You don't need Active Directory, what you do need is a machine with two
shared printers. Alternatively use two print servers. Be flexible and if necessary cheat by creating 'fantasy' printers with the Add Printer Wizard.
Instructions
Your server is unlikely to be called \\ grand, therefore, find and then edit the value of strUNCPrinter1.
Copy and paste the script below into notepad or get a script editor such as OnScript (free download).
Save the file with .vbs extension e.g. Printer1.vbs.
Double click and observe the message box and check your Printers and Faxes folder.
' Printer1.vbs - Windows Logon Script. ' VBScript - Connect a printer with AddWindowsPrinterConnection ' Author Guy Thomas http://computerperformance.co.uk/ ' Version 1.7 - June
2010 ' -----------------------------------------------------------' Option Explicit Dim objNetwork, strUNCPrinter1 strUNCPrinter1 = "\\grand\HPLaserJ"
' Create a network object (not
Environment or AD) Set objNetwork = CreateObject("WScript.Network") objNetwork.AddWindowsPrinterConnection strUNCPrinter1
' Optional command to show where to look for your printer
WScript.Echo "Check the Printers folder for : " & strUNCPrinter1
WScript.Quit
' End of Guy's example printer script.
VBS Learning Points
Note 1: AddWindowsPrinterConnection is the key command. Providing the client is XP or Windows 2000, you only need one argument, the UNC path to the network printer. In this
example, the printer is controlled by the variable strUNCPrinter1. However, it is possible to use the UNC path directly, without creating a variable: objNetwork.AddWindowsPrinterConnection \\
grand\HPLaserJ
Note 2: To help with the line numbers, and to color code your commands get OnScript (free download).
Here in Stage Two is where we fulfil our mission and add more printers. Let us build on the success of Stage One and add an extra command, which maps a second printer.
' PrintersTwo.vbs - Windows Logon Script. ' VBScript - Connect two network printers ' Author Guy Thomas http://computerperformance.co.uk/ ' Version 2.3 - June
2010 ' ----------------------------------------------------------' Option Explicit Dim objNetwork, strLocal, strUNCPrinter1, strUNCPrinter2 strUNCPrinter1 = "\\grand\HPLaserJ"
strUNCPrinter2 = "\\zara\Epson" Set objNetwork = CreateObject("WScript.Network") objNetwork.AddWindowsPrinterConnection strUNCPrinter1 objNetwork.AddWindowsPrinterConnection strUNCPrinter2
WScript.Quit
' End of Guy's multiple printer script.
Learning Points
Note 1: You only need one object: objNetwork. The secret is to recycle this object by AddWindowsPrinterConnection to two different strUNCPrinter variables.
Note 2:
It is straightforward to add a third printer by introducing another strUNCPrinterX and then inserting a matching objNetwork.AddWindowsPrinterConnection strUNCPrinterX statement.
Guy
Recommends: Permissions Analyzer - Free Active Directory Tool
I like the
Permissions Monitor because it enables me to see quickly WHO has permissions
to do WHAT. When you launch this tool it analyzes a users effective NTFS
permissions for a specific file or folder, takes into account network share
access, then displays the results in a nifty desktop dashboard!
Think of all the frustration that this free utility saves when you are
troubleshooting authorization problems for users access to a resource.
Once you add a second
or third printer, it makes sense to set the default printer rather than leave it to chance. In this example I have set the default printer to strUNCPrinter1, however, you may wish to amend this value.
' PrinterSetDefault.vbs - Windows Logon Script. ' VBScript - Set Default Printer ' Author Guy Thomas http://computerperformance.co.uk/ ' Version 3.2 - June
2010 ' -----------------------------------------------------------' Option Explicit Dim objNetwork, strLocal, strUNCPrinter1, strUNCPrinter2 strLocal = "HPLaserJet2420" strUNCPrinter1 = "\\zara\HPLaserJ"
strUNCPrinter2 = "\\zara\Epson" Set objNetwork = CreateObject("WScript.Network") objNetwork.AddWindowsPrinterConnection strUNCPrinter1 objNetwork.AddWindowsPrinterConnection strUNCPrinter2
objNetwork.SetDefaultPrinter strUNCPrinter1
WScript.Quit
' End of Guy's set printer script.
Learning Points
Note 1: You may have been wondering why I introduced strLocal, but not used this variable. The answer is that I have left a little work for you, a) Change the value of strLocal
b) Then amend this line : objNetwork.SetDefaultPrinter
strUNCPrinter1 to objNetwork.SetDefaultPrinter strLocal
Mapping two printers is not difficult. Use this as an opportunity to apply knowledge from others areas, for example mapping multiple network drives. Once you have created two or more printers, then it makes
sense to control which printer is the default.
The extra features you get in your eBook
include, more pages full of detailed examples. Also, ten 'how to...'
sections, with screen shots showing which menus to use. Go for Guy's
eBook - and get a printable version with copy enabled and no expiry date.
Windows Management Instrumentation (WMI) is one of the hidden
treasures of Microsoft operating systems.
Fortunately, Solarwinds
have created the
Free WMI Monitor so that you can actually see and understand these gems of
performance information. Take the guess work out of which
WMI counters to use for applications like Microsoft Active Directory,
SQL or Exchange Server.