Introduction to SetDefaultPrinter
Whether you have recently added a printer, or just removed one, I expect that you want to set the default printer. Naturally, if there is only one printer, then Windows XP will
automatically make that one the default and there will be less need for a SetDefaultPrinter section in your Windows logon script.
Topics for SetDefaultPrinter
Compared with scripting Active Directory, scripting printers is easy because there are fewer parts to each command. In
the case of SetDefaultPrinter, we need only the name of the printer - that is all. Here is the SetDefaultPrinter method and its one argument: objNetwork.SetDefaultPrinter "HP LaserJet
2420" or objNetwork.SetDefaultPrinter strUNCPrinter
You will see in my logon script examples that SetDefaultPrinter is a straightforward VBScript method that can be used on all clients from XP and Windows 2003 to NT 4.0 and Windows 9x.
With other examples, I have provided additional steps to first create a printer, then manipulate it. Since setting the default printer is so easy, and follows on so logically, here is
one complete
script, which creates a printer and then sets that printer as the default. Instructions to SetDefaultPrinter
- This script works on XP, Windows Server 2003, and Windows 2000.
- 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. SetDefaultPrinter.vbs.
- Double click and launch your Printers folder. Check which is printer is the default.
'' SetDefaultPrinter.vbs - Windows logon script example ' PrintersDefault.vbs - Set the default printer ' VBScript - to map a network printer ' Author Guy Thomas
http://computerperformance.co.uk/ ' Version 1.4 - April 24th 2005 ' -----------------------------------------------------------------' Option Explicit Dim objNetwork, strUNCPrinter strUNCPrinter
= "\\LittleServer\HP LaserJet 2420" Set objNetwork = CreateObject("WScript.Network") objNetwork.AddWindowsPrinterConnection strUNCPrinter
' Here is where we set the default printer to
strUNCPrinter objNetwork.SetDefaultPrinter strUNCPrinter WScript.Echo "Check the
Printers folder for : " & strUNCPrinter
WScript.Quit
' End of Guy's Windows logon example VBScript.
Learning Points
Note 1: The basic SetDefaultPrinter is a short command with no commas and only one argument - the printer share name. Note 2: Surprisingly, you do not need to know the whereabouts of the
print server. Note 3: To appreciate this SetDefaultPrinter script, I suggest that you create another printer and manually set that as the default. Now run this script again and see what happens.
Scenarios: Suppose that your XP computer has 4 printers. What if you you just delete the default printer
from the default Printers and faxes folder? Now there are 3 printers remaining,
which should become the new default? Do you leave it to chance, or do you script it? If it were me I would want the control, therefore, I would run up a SetDefaultPrinter VBScript. Take another
scenario, suppose that you are adding a printer and you don't want it to be the default, you want to enforce one of the
others as the default. Then again, the answer is to script it. Instructions to SetDefaultPrinter - Copy and paste the script below into notepad.
- Save the file with .vbs extension e.g. SetDefaultPrinter.vbs.
- Double click and check in your Printers folder. Which printer is the default?
' SetDefaultPrinter.vbs - Windows logon script example ' PrintersDefault.vbs - Set the default printer. ' VBScript - to map a network printer ' Author Guy Thomas
http://computerperformance.co.uk/ ' Version 2.1 - April 24th 2005 ' -----------------------------------------------------------------' Option Explicit Dim objNetwork, strUNCPrinter, strLocal
strUNCPrinter = "\\LittleServer\HP LaserJet 2420" strLocal = "IBM" Set objNetwork = CreateObject("WScript.Network") objNetwork.AddWindowsPrinterConnection strUNCPrinter
'
Here is where we set the default printer to strUNCPrinter objNetwork.SetDefaultPrinter strLocal
WScript.Echo "Check the Printers folder for : " & strUNCPrinter
WScript.Quit
' End of Guy's SetDefaultPrinter logon script.
Learning Points
Note 1: This time strLocal points to a different printer from strUNCPrinter. Note 2: To see this script to best effect you need a third printer which is initially set to the
default printer. The good news is that you can play 'fantasy printers' just pretend that you have an Epson xyz or a Lexmark 123ABC, just to practice your scripting.
It costs very little in terms of scripting time or space, to add an extra line of code to explicitly set the default printer. SetDefaultPrinter only needs one argument, the name of the UNC path to
the print server. This is one of the easiest Windows VBScripts that you will encounter. For a more demanding challenge try EnumPrinterConnections. (See below for links).
See Also● Logon Script Home ● RemovePrinterConnection ● EnumPrinterConnections |