Well, since our current solution for mapping printers is an ugly batch file, which needs to be put into Startup, I today poked at doing it in VBscript (I know, but it’s less ugly than the batch script, trust me).
As some of you know, printers are only applicable to users (as in you can’t put a startup script onto an OU, which is going to map the printers). So as we store users and the computes in different OU’s in our Active Directory (we do have about 15.000 students), I can’t apply the printer.vbs to the users OU directly either, unless I implement some intelligence into the script itself.
And that’s basically what I did. Since different pools at the university have different DNS suffixes (like pools.rz.barfoo.org, that our or pools.fmz.barfoo.org) and we only want them students to have our printers when they logon at our pool, I just made the script to get the DNS DomainName of the current active interface and compare it against a given pattern.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
' The problem is, if you apply something like this the users get the printers regardless whether they ' are at our location or a different one. So we either need to look up the current AD object (this computer), ' or just compare our current DNS suffix/DomainName against a known pattern. ' Now, lets get the DomainName from the WMI-Interface strComputer = "." Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\.rootcimv2") Set colNicConfigs = objWMIService.ExecQuery ("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True") For Each objNicConfig In colNicConfigs strDNSDomain = objNicConfig.DNSDomain Next ' Apply some regexp foo, to see if we're at the computing center or not! Dim regexp Set regexp = New RegExp regexp.Pattern = "pools.rz.barfoo.org" if regexp.Test(strDNSDomain) Then 'If so, then lets just connect the printers we need! Set WshNetwork = CreateObject("WScript.Network") WshNetwork.AddWindowsPrinterConnection "\nas.barfoo.orgKyocera Mita FS-9100DN KX" ' Set the default printer to something useful WshNetwork.SetDefaultPrinter "\nas.barfoo.orgKyocera Mita FS-9100DN KX" End If |
One thought to “VBscript & Active Directory and printers ?”