Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations Chris Miller on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Setting local printer default after mapping network printers

Status
Not open for further replies.

chriskdixon

IS-IT--Management
Aug 22, 2007
17
US
Dim objNetwork
Dim objPrinters
Dim ADSysInfo
Dim ComputerName

on error resume next

Set objNetwork = CreateObject("WScript.Network")
Set objPrinters = objNetwork.EnumPrinterConnections
Set ADSysInfo = CreateObject("ADSystemInfo")
Set ComputerName = GetObject("LDAP://" & ADSysInfo.ComputerName)

If Instr(ADSysInfo.ComputerName, "OU=IT Computers") Then

objNetwork.AddWindowsPrinterConnection "\\serverdc\it"
objNetwork.AddWindowsPrinterConnection "\\serverdc\server"
objNetwork.SetDefaultPrinter("\\serverdc\it")

ElseIf Instr(ADSysInfo.ComputerName, "OU=News Computers") Then

objNetwork.AddWindowsPrinterConnection "\\serverdc\draft"
objNetwork.AddWindowsPrinterConnection "\\serverdc\qset1"
objNetwork.AddWindowsPrinterConnection "\\serverdc\qset2"
objNetwork.AddWindowsPrinterConnection "\\serverdc\qset3"
objNetwork.AddWindowsPrinterConnection "\\serverdc\desk"
objNetwork.AddWindowsPrinterConnection "\\serverdc\user1"
objNetwork.SetDefaultPrinter("\\serverdc\draft")

If Instr(ADSysInfo.ComputerName, "OU=Sports") Then

objNetwork.AddWindowsPrinterConnection "\\serverdc\sports"
objNetwork.SetDefaultPrinter("\\serverdc\sports")

End If

ElseIf Instr(ADSysInfo.ComputerName, "OU=Sales Computers") Then

objNetwork.AddWindowsPrinterConnection "\\serverdc\sales"
objNetwork.AddWindowsPrinterConnection "\\serverdc\xerox"
objNetwork.SetDefaultPrinter("\\serverdc\sales")

ElseIf Instr(ADSysInfo.ComputerName, "OU=Business Office Computers") Then

objNetwork.AddWindowsPrinterConnection "\\serverdc\business"
objNetwork.AddWindowsPrinterConnection "\\serverdc\check"
objNetwork.AddWindowsPrinterConnection "\\serverdc\xerox"
objNetwork.AddWindowsPrinterConnection "\\serverdc\business color laser"
objNetwork.SetDefaultPrinter("\\serverdc\business")

ElseIf Instr(ADSysInfo.ComputerName, "OU=Promotions Computers") Then

objNetwork.AddWindowsPrinterConnection "\\serverdc\promo"
objNetwork.AddWindowsPrinterConnection "\\serverdc\draft"
objNetwork.AddWindowsPrinterConnection "\\serverdc\qset1"
objNetwork.AddWindowsPrinterConnection "\\serverdc\qset2"
objNetwork.AddWindowsPrinterConnection "\\serverdc\qset3"
objNetwork.SetDefaultPrinter("\\serverdc\promo")

End If


Set WSHPrinters = objNetwork.EnumPrinterConnections
For LOOP_COUNTER = 0 To WSHPrinters.Count - 1 Step 2
'Find local printers
If Left(WSHPrinters.Item(LOOP_COUNTER +1),2) <> "\\" Then
objNetwork.SetDefaultPrinter _
(WSHPrinters.Item(LOOP_COUNTER +1))
End If
Next

I tried this script and I get a ERROR on line 108 Char 1 Expected End
800A03F6
 
Correction

[4'] I have left "CN=" in the select case loop. It shouldn't be there, sure. And there is a typos on "agroup[red]s[/red]" Sorry for the confusion. Here is a relist.
[tt]
Set objNetwork = CreateObject("WScript.Network")
Set ADSysInfo = CreateObject("ADSystemInfo")
Set objComputer = GetObject("LDAP://" & ADSysInfo.ComputerName)
objComputer.getInfo
agroups=objComputer.getEx("memberOf")
for each sgroup in agroup[highlight]s[/highlight]
scn=getobject("LDAP://" & sgroup).cn
select case ucase(scn)
case [red]"IT"[/red]
objNetwork.AddWindowsPrinterConnection= "\\opprint\PrinterName"
objNetwork.AddWindowsPrinterConnection= "\\server\PrinterName"
objNetwork.AddWindowsPrinterConnection= "\\server\PrinterName"
objNetwork.AddWindowsPrinterConnection= "\\server\NeoProfen"
objNetwork.SetDefaultPrinter "\\server\PrinterName"
exit for
case [red]"REGULATORY"[/red]
objNetwork.AddWindowsPrinterConnection "\\server\PrinterName"
objNetwork.AddWindowsPrinterConnection "\\server\PrinterName"
objNetwork.AddWindowsPrinterConnection "\\server\Melperone"
objNetwork.AddWindowsPrinterConnection "\\server\PrinterName"
objNetwork.AddWindowsPrinterConnection "\\server\PrinterName"
objNetwork.SetDefaultPrinter "\\server\Melperone"
exit for
'etc etc on all the cases of interest
case else
'do nothing else??? if not in any of the above group
end select
next
'etc etc
[/tt]
 
tsuji I run he script below and I get "The directory property cannot be found in the cache" Line 8 Char 1
Any Clues





Const IT = "groupType=it"
Const Accounting = "groupType=accounting"
Const BusDev = "groupType=busdev"
Set objNetwork = CreateObject("WScript.Network")
Set ADSysInfo = CreateObject("ADSystemInfo")
Set objComputer = GetObject("LDAP://" & ADSysInfo.ComputerName)
objComputer.getInfo
agroups=objComputer.getEx("memberOf")
for each sgroup in agroups
scn=getobject("LDAP://" & sgroup).cn
select case ucase(scn)
case "IT"
objNetwork.AddWindowsPrinterConnection= "\\opprint\PrinterName"
objNetwork.AddWindowsPrinterConnection= "\\server\PrinterName"
objNetwork.AddWindowsPrinterConnection= "\\server\PrinterName"
objNetwork.AddWindowsPrinterConnection= "\\server\PrinterName"
objNetwork.SetDefaultPrinter "\\server\PrinterName"
exit for

exit for
End Select
Next
WScript.Quit
 
[4.1] If the computer is no other group other than a primary group, GetEx("memberof") unfortunately will result in error. Hence, it is better to trap that possibility as an expansion of the script.
[tt]
Set objNetwork = CreateObject("WScript.Network")
Set ADSysInfo = CreateObject("ADSystemInfo")
Set objComputer = GetObject("LDAP://" & ADSysInfo.ComputerName)
objComputer.getInfo
[blue]on error resume next[/blue]
agroups=objComputer.getEx("memberOf")
[blue]if err.number=0 then[/blue]
for each sgroup in agroups
scn=getobject("LDAP://" & sgroup).cn
select case ucase(scn)
case "IT"
objNetwork.AddWindowsPrinterConnection= "\\opprint\PrinterName"
objNetwork.AddWindowsPrinterConnection= "\\server\PrinterName"
objNetwork.AddWindowsPrinterConnection= "\\server\PrinterName"
objNetwork.AddWindowsPrinterConnection= "\\server\NeoProfen"
objNetwork.SetDefaultPrinter "\\server\PrinterName"
exit for
case "REGULATORY"
objNetwork.AddWindowsPrinterConnection "\\server\PrinterName"
objNetwork.AddWindowsPrinterConnection "\\server\PrinterName"
objNetwork.AddWindowsPrinterConnection "\\server\Melperone"
objNetwork.AddWindowsPrinterConnection "\\server\PrinterName"
objNetwork.AddWindowsPrinterConnection "\\server\PrinterName"
objNetwork.SetDefaultPrinter "\\server\Melperone"
exit for
'etc etc on all the cases of interest
case else
'do nothing else??? if not in any of the above group
end select
next
'etc etc
[blue]on error goto 0
'etc etc other tasks than the above mapping[/blue]
[/tt]
[5] I suppose IT, Regulatory,... are not "primary groups"? If yes, the above would not work.
 
correction
Sorry, missed out the end if!!!
[tt]
'etc etc
[blue]end if[/blue] 'just have to watch out error trapping if needed within the if-block.
on error goto 0
'etc etc other tasks than the above mapping
[/tt]
 
Ok I got something working but when I started to add my other groups I error out at a certain point.

Now I get a ERROR Code "Wrong number of Arguements or invalid property assignment Code: 800A01C2


Option Explicit
Dim objNetwork, objUser, CurrentUser
Dim strGroup

Const Accounting = "CN=Accounting"
Const BusDev = "CN=BusDev"
Const Finance= "CN=Finance"
Const Marketing = "CN=Marketing"
Const Medical Affairs = "CN=Medical Affairs" <---------------ERROR Starts HERE
Const Operations = "CN=Operations"
Const PV = "CN=PV"
Const Regulatory ="CN=Regulatory"
Const Sales_&_Marketing= "CN=Sales & Marketing"
Const Stats_&_Data_Mgmt= "CN=Stats & Data Mgmt"
Const IT= "CN=IT"
Set objUser = CreateObject("ADSystemInfo")
Set CurrentUser = GetObject("LDAP://" & objUser.UserName)
strGroup = LCase(Join(CurrentUser.MemberOf))
Set objNetwork = CreateObject("WScript.Network")
' Forces script to skip errors (rem below line to see errors)
on error resume next
If instr(strGroup, "it") Then
objNetwork.AddWindowsPrinterConnection "\\Server\Printer"
objNetwork.AddWindowsPrinterConnection"\\Server\Printer"
objNetwork.AddWindowsPrinterConnection"\\Server\Printer"
objNetwork.SetDefaultPrinter "\\Server\Printer"
WScript.Echo "Added"
ElseIf instr(strGroup, "regulatory") Then
objNetwork.AddWindowsPrinterConnection "\\Server\Printer"
objNetwork.AddWindowsPrinterConnection "\\Server\Printer"
objNetwork.AddWindowsPrinterConnection "\\Server\Printer"
objNetwork.AddWindowsPrinterConnection "\\Server\Printer"
objNetwork.AddWindowsPrinterConnection "\\Server\Printer"
objNetwork.SetDefaultPrinter "\\Server\Printer"
ElseIf instr(strGroup, "finance") Then
objNetwork.AddWindowsPrinterConnection= "\\Server\Printer"
objNetwork.AddWindowsPrinterConnection= "\\Server\Printer"
objNetwork.AddWindowsPrinterConnection= "\\Server\Printer"
objNetwork.AddWindowsPrinterConnection= "\\Server\Printer"
objNetwork.SetDefaultPrinter "\\Server\Printer"
End If
If instr(strGroup, "accounting") Then
objNetwork.AddWindowsPrinterConnection= "\\Server\Printer"
objNetwork.AddWindowsPrinterConnection= "\\Server\Printer"
objNetwork.AddWindowsPrinterConnection= "\\Server\Printer"
objNetwork.AddWindowsPrinterConnection= "\\Server\Printer"
objNetwork.SetDefaultPrinter "\\Server\Printer"
ElseIf instr(strGroup, "busdev") Then
objNetwork.AddWindowsPrinterConnection= "\\Server\Printer"
objNetwork.AddWindowsPrinterConnection= "\\Server\Printer"
objNetwork.AddWindowsPrinterConnection= "\\Server\Printer"
objNetwork.SetDefaultPrinter "\\Server\Printer"
ElseIf instr(strGroup, "marketing") Then
objNetwork.AddWindowsPrinterConnection= "\\Server\Printer"
objNetwork.AddWindowsPrinterConnection= "\\Server\Printer"
objNetwork.AddWindowsPrinterConnection= "\\Server\Printer"
objNetwork.AddWindowsPrinterConnection= "\\Server\Printer"
objNetwork.SetDefaultPrinter "\\Server\Printer"
End If
If instr(strGroup, "sales & marketing") Then
objNetwork.AddWindowsPrinterConnection= "\\Server\Printer"
objNetwork.AddWindowsPrinterConnection= "\\Server\Printer"
objNetwork.AddWindowsPrinterConnection= "\\Server\Printer"
objNetwork.AddWindowsPrinterConnection= "\\Server\Printer"
objNetwork.SetDefaultPrinter "\\Server\Printer"
ElseIf instr(strGroup, "medical affairs") Then
objNetwork.AddWindowsPrinterConnection= "\\Server\Printer"
objNetwork.SetDefaultPrinter "\\Server\Printer"
ElseIf instr(strGroup, "operation") Then
objNetwork.AddWindowsPrinterConnection= "\\Server\Printer"
objNetwork.AddWindowsPrinterConnection= "\\Server\Printer"
objNetwork.AddWindowsPrinterConnection= "\\Server\Printer"
objNetwork.SetDefaultPrinter "\\Server\Printer"
End If
If instr(strGroup, "pv") Then
objNetwork.AddWindowsPrinterConnection= "\\Server\Printer"
objNetwork.AddWindowsPrinterConnection= "\\Server\Printer"
objNetwork.SetDefaultPrinter "\\Server\Printer"
ElseIf instr(strGroup, "stats & data mgmt") Then
objNetwork.AddWindowsPrinterConnection= "\\Server\Printer"
objNetwork.AddWindowsPrinterConnection= "\\Server\Printer"
objNetwork.SetDefaultPrinter "\\Server\Printer"
End If

'Next
WScript.Quit
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top