I don't know what to do. The way that VBscript sets a printer to be default just isn't working on all of my machines. It will set the default printer, then it will switch to the secondary printer. I even tried doing a objshell.RegWrite to set the default printer and it croaked even more. Could someone instruct me on what I am doing wrong, because setdefaultprinter should work and it does on the majority of my PCs. Here is my script:
'********************************************************************************************
'
' NAME: PRINTER.VBS
' AUTHOR: RON HINTON
' CREATED: 9/28/2004
' DESCRIPTION: Connects printers to users via computer print group membership
'
'********************************************************************************************
on error resume next 'this allows execution of script even if it runs into an error
'Declare Variables
'**************************
Dim SR_PrinterInstalled, colGroups, objShell, strUGroups, objNet, Local, objSysInfo, R_Secondary, objComputer, R_PrinterInstalled, strComputerDN, objPrinters_Array, I, R_CompInGroup , strGroups, Printer1, Printer2, Printer3, Printer4, Printer5, Printer6, Printer7, Printer8, Printer9, Printer10, Printer11, Printer12, Printer13, Printer14, Printer15, Printer16, Printer17, Printer18, Printer19, Printer20, Printer21, Printer22, Printer23, Printer24, Printer25
Set objShell = WScript.CreateObject("WScript.Shell")
Set objNET = WScript.CreateObject("WScript.Network")
Set objSysInfo = WScript.CreateObject("ADSystemInfo")
strComputerDN = objSysInfo.COMPUTERNAME
Set objComputer = GetObject("LDAP://" & strComputerDN) 'Binds the objComputer to the Distiguished Name of the Computer in reference
colGroups = objComputer.MemberOf 'collection of the groups in AD that the computer being referenced is a member of
If IsEmpty(colGroups) Then
strGroups = ""
ElseIf TypeName(colGroups) = "String" Then 'Checks to see if the colGroups is a String or not
strGroups = LCase(colGroups) 'sets everything in colGroups to lowercase
Else
strGroups = LCase(Join(colGroups)) 'joins everything in colGroups into one string and then it sets everything lowercase
End If
Set objPrinters_Array = objNet.EnumPrinterConnections 'Enumerates all the printers connected to the computer in reference and assigns the array to the variable
'Set variable values
'***********************
Printer1 = "\\marble\NG149-Laser" 'MIS's Printer
Printer2 = "\\marble\NG159-Laser" 'NorthGate Mailroom's Printer
Printer3 = "\\marble\NG100-Laser" 'NorthGate Unit's Printer
Printer4 = "\\marble\NG105-Laser" 'NorthGate Reception's Printer
Printer5 = "\\marble\NG143-Laser" 'NorthGate OutPatient's Printer
Printer6 = "\\marble\NG144-Laser" 'NorthGate Crisis Intervention's Printer
Printer7 = "\\sr-om1\OM-Laser" 'Oakmont ACT's Printer
Printer8 = "\\marble\NG152-Laser" 'NorthGate MedRec's Printer
Printer9 = "\\marble\NG163-Laser" 'NorthGate Accounting's Printer
Printer10 = "\\marble\NG209-Admin" 'NorthGate Admin's Printer
Printer11 = "\\marble\NG312-Laser" 'NorthGate CD's Printer
Printer12 = "\\sr-mv\MV308-Laser" 'Maryville Lighthouse's Printer
Printer13 = "\\sr-mv\MV105-Laser" 'Maryville MedRec's Printer
Printer14 = "\\sr-mv\MV314-Laser" 'Maryville Admin's Printer
Printer15 = "\\sr-bv\BV157-Laser" 'Belleville Admin's Printer
Printer16 = "\\sr-bv\BV137-Laser" 'Belleville MedRec's Printer
Printer17 = "\\sr-bv\BV163-Laser" 'Belleville OutPatient's Printer
Printer18 = "\\sr-bv\BV103-Laser" 'Belleville Reception's Printer
Printer19 = "\\sr-bv\BV011-Laser" 'Belleville Case Management Printer
Printer20 = "\\sr-em\EM-L1-Laser" 'East Main'
Printer21 = "\\sr-fh1\HPLaser" 'Fairview Heights' Printer
Printer22 = "\\sr-psr\ED-L3-Laser" 'Edison Case Management's Printer
Printer23 = "\\sr-psr\ED-L2-Laser" 'Edison Level2's Printer
Printer24 = "\\sr-psr\ED-L1-Laser" 'Edison Level1's Printer
Printer25 = "\\marble\NG208-ColorLaser" 'NorthGate's Color Printer
Printer26 = "\\marble\NG102-Laser" 'NorthGate's Outreach Printer
Printer27 = "\\sr-psr\ED-MedRec" 'Edison MedRec Printer
Printer28 = "\\NG169-MEDMAINT2\HP DeskJet 720c" 'Northgate MedMaint's Printer
Printer29 = "\\OM-Housing1\HP LaserJet 6P" 'Oakmont Housing Local Printer
'Define Constants
Const group0= "cn=Local-Print" 'Local Printers Group
Const group1= "cn=NG-Print-MIS" 'NG-149
Const group2= "cn=NG-Print-MailRoom" 'NG-159
Const group3= "cn=NG-Print-Unit" 'NG100-2200DN
Const group4= "cn=NG-Print-Recept" 'NG-105
Const group5= "cn=NG-Print-OP" 'NG-143
Const group6= "cn=NG-Print-CI" 'NG-144
Const group7= "cn=OM-Print" 'OM-ACT
Const group8= "cn=NG-Print-MedRec" 'NG-152
Const group9= "cn=NG-Print-Acct" 'NG-165
Const group10= "cn=NG-Print-Admin" 'NG-209-RICOH
Const group11= "cn=NG-Print-CD" 'NG-312
Const group12= "cn=MV-Print-LI" 'MV308-Laser
Const group13= "cn=MV-Print-MedRec" 'MV105-Laser
Const group14= "cn=MV-Print-Admin" 'MV314-Laser
Const group15= "cn=BV-Print-Adm" 'BV157-Laser
Const group16= "cn=BV-Print-MedRec" 'BV137-Laser
Const group17= "cn=BV-Print-OP" 'BV-OP-LJ4100
Const group18= "cn=BV-Print-Reception" 'BV-Reception-HP4100
Const group19= "cn=BV-Print-CM" 'BV-CM-LJ2300DTN
Const group20= "cn=EM-Print" 'EM-Laser
Const group21= "cn=FH-Print" 'HPLaser
Const group22= "cn=ED-Print-Level3" 'ED-CM-Laser
Const group23= "cn=ED-Print-Level2" 'ED-PSR-Level2
Const group24= "cn=ED-Print-Level1" 'ED-MedRec
Const group25= "cn=NG-Print-Color" 'NorthGate Color Print
Const group26= "cn=NG-Print-Outreach" 'NorthGate's Outreach
Const group27= "cn=ED-Print-MedRec" 'Edison MedRec
Const group28= "cn=NG-Print-MedMaint" 'Northgate MedMaint
Const group29= "cn=OM-Print-Local" 'Oakmont Housing Local Printer
Const IP1= "IP_192.168.60.28" 'NG-149
Const IP2= "IP_192.168.60.20" 'NG-159
Const IP3= "IP_192.168.60.25" 'NG100
Const IP4= "IP_192.168.60.21" 'NG-105
Const IP5= "IP_192.168.60.24" 'NG-143
Const IP6= "IP_192.168.60.26" 'NG-144
Const IP7= "IP_192.168.40.30" 'OM-ACT
Const IP8= "IP_192.168.60.23" 'NG-152
Const IP9= "IP_192.168.60.27" 'NG-163
Const IP10= "IP_192.168.60.30" 'NG209-Admin
Const IP11= "IP_192.168.60.33" 'NG312-Laser
Const IP12= "IP_192.168.30.30" 'MV308-Laser
Const IP13= "IP_192.168.30.154" 'MV105-Laser
Const IP14= "IP_192.168.30.155" 'MV314-Laser
Const IP15= "IP_192.168.100.30" 'BV157-Laser
Const IP16= "IP_192.168.100.36" 'BV137-Laser
Const IP17= "IP_192.168.100.32" 'BV163-Laser
Const IP18= "IP_192.168.100.33" 'BV103-Laser
Const IP19= "IP_192.168.100.35" 'BV011-Laser
Const IP20= "IP_192.168.110.30" 'EM-L1-Laser
Const IP21= "IP_192.168.120.20" 'HPLaser
Const IP22= "IP_192.168.80.24" 'ED-L3-Laser
Const IP23= "IP_192.168.80.23" 'ED-L2-Laser
Const IP24= "IP_192.168.80.22" 'ED-L1-Laser
Const IP25= "IP_192.168.60.30" 'Northgate's Color Printer
Const IP26= "IP_192.168.60.32" 'NG-102
Const IP27= "IP_192.168.80.20" 'ED-MedRec
Const SIP1= "IP_192.168.60.28" 'NG-149
Const SIP2= "IP_192.168.60.20" 'NG-159
Const SIP3= "IP_192.168.60.25" 'NG100
Const SIP4= "IP_192.168.60.21" 'NG-105
Const SIP5= "IP_192.168.60.24" 'NG-143
Const SIP6= "IP_192.168.60.26" 'NG-144
Const SIP7= "IP_192.168.40.30" 'OM-ACT
Const SIP8= "IP_192.168.60.23" 'NG-152
Const SIP9= "IP_192.168.60.27" 'NG-163
Const SIP10= "IP_192.168.60.30" 'NG209-Admin
Const SIP11= "IP_192.168.60.33" 'NG312-Laser
Const SIP12= "IP_192.168.30.30" 'MV308-Laser
Const SIP13= "IP_192.168.30.154" 'MV105-Laser
Const SIP14= "IP_192.168.30.155" 'MV314-Laser
Const SIP15= "IP_192.168.100.30" 'BV157-Laser
Const SIP16= "IP_192.168.100.36" 'BV137-Laser
Const SIP17= "IP_192.168.100.32" 'BV163-Laser
Const SIP18= "IP_192.168.100.33" 'BV103-Laser
Const SIP19= "IP_192.168.100.35" 'BV011-Laser
Const SIP20= "IP_192.168.110.30" 'EM-L1-Laser
Const SIP21= "IP_192.168.120.20" 'HPLaser
Const SIP22= "IP_192.168.80.24" 'ED-L3-Laser
Const SIP23= "IP_192.168.80.23" 'ED-L2-Laser
Const SIP24= "IP_192.168.80.22" 'ED-L1-Laser
Const SIP25= "IP_192.168.60.30" 'Northgate's Color Printer
Const SIP26= "IP_192.168.60.32" 'NG-102
Const SIP27= "IP_192.168.80.20" 'ED-MedRec
Function FPrinterRoutine(S_group, R_CompInGroup) 'S=submitted value, R=returned value
Dim ArrayResult
'Check to see if the computer being logged in to is a member of the specific printer group to which this printer represents, return result.
IF InStr(1,strGroups, S_group,1) > 0 THEN 'Checks to see if the submitted group is a part of the string strGroups
R_CompInGroup = 0 'Computer is in group
ELSE
R_CompInGroup = -1 'Computer is not in group
END IF
END Function
For i = 0 to objPrinters_Array.Count - 1 Step 2
objNet.RemovePrinterConnection objPrinters_Array.Item(i+1)
Next
'IF strComputerDN = "NG156-BILLING"
'Connect Printers Based on Group Membership
'*******************************************
'Routine for Local Printers
IF InStr(1,strGroups, group0,1) > 0 THEN 'Checks to if Local Print group is part of the string strGroups
Local=0 'Local printer installed
ELSE
Local=-1 'No local printer installed
END IF
'Printer1 Routine for the NG-MIS Printer
CALL FPrinterRoutine(group1, R_CompInGroup)
IF R_CompInGroup = 0 Then
objNet.AddWindowsPrinterConnection Printer1
objNet.AddWindowsPrinterConnection Printer2
END IF
IF Local=-1 Then
objNet.SetDefaultPrinter Printer1
END IF
'Printer2 Routine for the NG-Mailroom Printer
CALL FPrinterRoutine(group2, R_CompInGroup)
IF R_CompInGroup = 0 Then
objNet.AddWindowsPrinterConnection Printer2
objNet.AddWindowsPrinterConnection Printer5
END IF
IF Local=-1 Then
objNet.SetDefaultPrinter Printer2
END IF
'Printer3 Routine for the NG-Unit Printer
CALL FPrinterRoutine(group3, R_CompInGroup)
IF R_CompInGroup = 0 Then
objNet.AddWindowsPrinterConnection Printer3
objNet.AddWindowsPrinterConnection Printer6
END IF
IF Local=-1 Then
objNet.SetDefaultPrinter Printer3
END IF
'Printer4 Routine for the NG-Reception Printer
CALL FPrinterRoutine(group4, R_CompInGroup)
IF R_CompInGroup = 0 Then
objNet.AddWindowsPrinterConnection Printer4
objNet.AddWindowsPrinterConnection Printer2
END IF
IF Local=-1 Then
objNet.SetDefaultPrinter Printer4
END IF
'Printer5 Routine for the NG-OP Printer
CALL FPrinterRoutine(group5, R_CompInGroup)
IF R_CompInGroup = 0 Then
objNet.AddWindowsPrinterConnection Printer5
objNet.AddWindowsPrinterConnection Printer2
END IF
IF Local=-1 Then
objNet.SetDefaultPrinter Printer5
END IF
'Printer6 Routine for the NG-CI Printer
CALL FPrinterRoutine(group6, R_CompInGroup)
IF R_CompInGroup = 0 Then
objNet.AddWindowsPrinterConnection Printer6
objNet.AddWindowsPrinterConnection Printer5
END IF
IF Local=-1 Then
objNet.SetDefaultPrinter Printer6
END IF
'Printer7 Routine for the OM Printer
CALL FPrinterRoutine(group7, R_CompInGroup)
IF R_CompInGroup = 0 Then
objNet.AddWindowsPrinterConnection Printer7
END IF
IF Local=-1 Then
objNet.SetDefaultPrinter Printer7
END IF
'Printer8 Routine for the NG-MedRec Printer
CALL FPrinterRoutine(group8, R_CompInGroup)
IF R_CompInGroup = 0 Then
objNet.AddWindowsPrinterConnection Printer8
objNet.AddWindowsPrinterConnection Printer2
END IF
IF Local=-1 Then
objNet.SetDefaultPrinter Printer8
END IF
'Printer9 Routine for the NG-Acct Printer
CALL FPrinterRoutine(group9, R_CompInGroup)
IF R_CompInGroup = 0 Then
objNet.AddWindowsPrinterConnection Printer9
objNet.AddWindowsPrinterConnection Printer2
END IF
IF Local=-1 Then
objNet.SetDefaultPrinter Printer9
END IF
'Printer10 Routine for the NG-Admin Printer
CALL FPrinterRoutine(group10, R_CompInGroup)
IF R_CompInGroup = 0 Then
objNet.AddWindowsPrinterConnection Printer10
objNet.AddWindowsPrinterConnection Printer2
END IF
IF Local=-1 Then
objNet.SetDefaultPrinter Printer10
END IF
'Printer11 Routine for the NG-CD Printer
CALL FPrinterRoutine(group11, R_CompInGroup)
IF R_CompInGroup = 0 Then
objNet.AddWindowsPrinterConnection Printer11
objNet.AddWindowsPrinterConnection Printer2
END IF
IF Local=-1 Then
objNet.SetDefaultPrinter Printer11
END IF
'Printer12 Routine for MV Lighthouse Printer
CALL FPrinterRoutine(group12, R_CompInGroup)
IF R_CompInGroup = 0 Then
objNet.AddWindowsPrinterConnection Printer12
objNet.AddWindowsPrinterConnection Printer14
END IF
IF Local=-1 Then
objNet.SetDefaultPrinter Printer12
END IF
'Printer13 Routine for the MV MedRec Printer
CALL FPrinterRoutine(group13, R_CompInGroup)
IF R_CompInGroup = 0 Then
objNet.AddWindowsPrinterConnection Printer13
objNet.AddWindowsPrinterConnection Printer14
END IF
IF Local=-1 Then
objNet.SetDefaultPrinter Printer13
END IF
'Printer14 Routine for the MV Admin Printer
CALL FPrinterRoutine(group14, R_CompInGroup)
IF R_CompInGroup = 0 Then
objNet.AddWindowsPrinterConnection Printer14
objNet.AddWindowsPrinterConnection Printer13
END IF
IF Local=-1 Then
objNet.SetDefaultPrinter Printer14
END IF
'Printer15 Routine for the BV Admin Printer
CALL FPrinterRoutine(group15, R_CompInGroup)
IF R_CompInGroup = 0 Then
objNet.AddWindowsPrinterConnection Printer15
objNet.AddWindowsPrinterConnection Printer16
END IF
IF Local=-1 Then
objNet.SetDefaultPrinter Printer15
END IF
'Printer16 Routine for the BV MedRec Printer
CALL FPrinterRoutine(group16, R_CompInGroup)
IF R_CompInGroup = 0 Then
objNet.AddWindowsPrinterConnection Printer16
objNet.AddWindowsPrinterConnection Printer15
END IF
IF Local=-1 Then
objNet.SetDefaultPrinter Printer16
END IF
'Printer17 Routine for the BV OP Printer
CALL FPrinterRoutine(group17, R_CompInGroup)
IF R_CompInGroup = 0 Then
objNet.AddWindowsPrinterConnection Printer17
objNet.AddWindowsPrinterConnection Printer15
END IF
IF Local=-1 Then
objNet.SetDefaultPrinter Printer17
END IF
'Printer18 Routine for the BV Reception Printer
CALL FPrinterRoutine(group18, R_CompInGroup)
IF R_CompInGroup = 0 Then
objNet.AddWindowsPrinterConnection Printer18
objNet.AddWindowsPrinterConnection Printer17
END IF
IF Local=-1 Then
objNet.SetDefaultPrinter Printer18
END IF
'Printer19 Routine for the BV CM Printer
CALL FPrinterRoutine(group19, R_CompInGroup)
IF R_CompInGroup = 0 Then
objNet.AddWindowsPrinterConnection Printer19
objNet.AddWindowsPrinterConnection Printer15
END IF
IF Local=-1 Then
objNet.SetDefaultPrinter Printer19
END IF
'Printer20 Routine for the EM Printer
CALL FPrinterRoutine(group20, R_CompInGroup)
IF R_CompInGroup = 0 Then
objNet.AddWindowsPrinterConnection Printer20
END IF
IF Local=-1 Then
objNet.SetDefaultPrinter Printer20
END IF
'Printer21 Routine for the FH Printer
CALL FPrinterRoutine(group21, R_CompInGroup)
IF R_CompInGroup = 0 Then
objNet.AddWindowsPrinterConnection Printer21
END IF
IF Local=-1 Then
objNet.SetDefaultPrinter Printer21
END IF
'Printer22 Routine for the ED-L3-Laser Printer
CALL FPrinterRoutine(group22, R_CompInGroup)
IF R_CompInGroup = 0 Then
objNet.AddWindowsPrinterConnection Printer22
objNet.AddWindowsPrinterConnection Printer27
END IF
IF Local=-1 Then
objNet.SetDefaultPrinter Printer22
END IF
'Printer23 Routine for the ED-L2-Laser Printer
CALL FPrinterRoutine(group23, R_CompInGroup)
IF R_CompInGroup = 0 Then
objNet.AddWindowsPrinterConnection Printer23
objNet.AddWindowsPrinterConnection Printer27
END IF
IF Local=-1 Then
objNet.SetDefaultPrinter Printer23
END IF
'Printer24 Routine for the ED-L1-Laser Printer
CALL FPrinterRoutine(group24, R_CompInGroup)
IF R_CompInGroup = 0 Then
objNet.AddWindowsPrinterConnection Printer24
objNet.AddWindowsPrinterConnection Printer27
END IF
IF Local=-1 Then
objNet.SetDefaultPrinter Printer24
END IF
'Printer27 Routine for the Edison MedRec Printer
CALL FPrinterRoutine(group27, R_CompInGroup)
IF R_CompInGroup = 0 Then
objNet.AddWindowsPrinterConnection Printer27
objNet.AddWindowsPrinterConnection Printer23
END IF
IF Local=-1 Then
objNet.SetDefaultPrinter Printer27
END IF
'Printer Routine for the Color Printer
CALL FPrinterRoutine(group25, R_CompInGroup)
IF R_CompInGroup = 0 Then
objNet.AddWindowsPrinterConnection Printer25
END IF
'Printer26 Routine for the NorthGate's Outreach Printer
CALL FPrinterRoutine(group26, R_CompInGroup)
IF R_CompInGroup = 0 Then
objNet.AddWindowsPrinterConnection Printer26
objNet.AddWindowsPrinterConnection Printer11
END IF
IF Local=-1 Then
objNet.SetDefaultPrinter Printer26
END IF
'Printer28 Routine for the Northgate's MedMaint Printer
CALL FPrinterRoutine(group28, R_CompInGroup)
IF R_CompInGroup = 0 Then
objNet.AddWindowsPrinterConnection Printer28
objNet.AddWindowsPrinterConnection Printer5
objNet.AddWindowsPrinterConnection Printer2
END IF
IF Local=-1 Then
objNet.SetDefaultPrinter Printer28
END IF
'Printer29 Routine for the Oakmont Housing Local printer
CALL FPrinterRoutine(group29, R_CompInGroup)
IF R_CompInGroup = 0 Then
objNet.AddWindowsPrinterConnection Printer29
objNet.AddWindowsPrinterConnection Printer7
END IF
IF Local=-1 Then
objNet.SetDefaultPrinter Printer29
END IF
'*****************************************************
'no work done below this line.