Chris addresses a batch of common questions from readers on ready-to-use scripts, useful books, collecting hardware information by script—and yes, ADSI.
Off the Script: Your Questions
Chris addresses a batch of common questions from readers on ready-to-use scripts, useful books, collecting hardware information by script—and yes, ADSI.
- By Chris Brooke
- September 01, 2000
Although I promised last month that I’d be starting a
series on ADSI this month, I’m going to take a one-month
detour. Having recently hosted a chat on www.mcpmag.com,
I’m using this month’s column to expand on my answers
to the top questions. There’s a good chance many of you
have the same questions. And, later in this article, I
have managed to include an ADSI question that just happened
to be submitted during the chat.
Rodney: Is there one reference that you would recommend
to the budding scripter?
There are several books I recommend for Windows Script
Host and VBScript:
- Windows Script Host by Tim Hill (New Riders
Publishing, ISBN 1-57870-139-2).
- VBScript Programmer’s Reference by Adrian
Kingsley-Hughes et al (Wrox Press, ISBN 1-86100-271-8).
- Windows NT/2000 ADSI Scripting for System Administration
by Thomas Eck (although this one tends to focus mostly
on VB rather than VBScript, probably not the best bet
for a newcomer. Published by MTP, ISBN 1-57870-219-4).
Ideally, the best way to learn is by writing scripts.
Start with a simple “Hello World” script and go from there.
If you have access to an MSDN subscription, you can find
wealth of information there. If not, http://msdn.microsoft.com/
scripting has lots of free resources.
Knoxman: Where can I get pre-written scripts to automate
such tasks as creating batches of users?
The MSDN scripting site I just mentioned has lots of
sample scripts. Most books include either a CD or a Web
site reference that contains the samples used. The Windows
2000 Professional Resource Kit CD contains a good
assortment of scripts (and not all of them are ADSI, either!).
If you happen to buy a third-party component, it will
generally come with samples, too.
But here’s the sleeper hit of the summer: ASP code! You
can’t throw a rock in the Barnes and Noble computer section
without hitting a book that has some ASP code in it. Go
through the ASP pages and copy the part between "<%"
and "%> or between "". You’ll find that with
a little tweaking, you’ll have a script that runs fine
in the WSH.
Alnico: How would you go about writing a script to
collect system information (hard drive, RAM, BIOS version,
etc)?
Well, there are third-party components that can be used
in a script to query configuration information, but you
can also do it with the WSHShell component. You can use
this built-in Windows component to query registry information,
including Hardware, TCP/IP configuration, BIOS information,
and the like. The registry contains everything you need
to know about your system. Once you know where the information
is stored in the registry, here’s how you query it from
your script:
' Regquery.vbs
' Query current IP address and BIOS revision date
Dim objShell, strIP, strBIOS
Set objShell=CreateObject("WScript.Shell") strIP=objShell.RegRead("HKEY_LOCAL_MACHINE\System\
CurrentControlSet\ Services\{GUID}\
Parameters\Tcpip\IPAddress")
strBIOS=objShell.RegRead("HKEY_LOCAL_MACHINE\
System\CurrentControlSet\Control\Biosinfo\
SystemBiosDate")
The registry is the best location for any information
about your system, or you can query the Active Directory.
Lanre:What’s ADSI scripting?
ADSI scripting is any scripting that uses the Active
Directory Services Interface to view or change information
stored in the Active Directory. You can, though, use the
ADSI to access and change NT information even if Active
Directory is not installed. One of the namespaces (interface
to services) exposed through ADSI is WinNT. You can use
this namespace to view and change information on a Windows
NT domain. The following script lists all Active Directory
namespaces currently installed:
' ADView.vbs
Dim objServices, strList, strProvider
set objServices=GetObject("ADs:")
For Each strProvider in objServices
strList=strList & strProvider.name
& vbcrlf
Next
WScript.Echo strList
As you can see in Figure 1, I currently have WinNT, NWCOMPAT,
NDS, and LDAP installed on my machine.
|
Figure 1. Installed namespaces. |
The two other namespaces that ship with Windows 2000
are IIS and DSMigrate. If you are dealing with Microsoft
technologies alone, you need only concern yourself with
WinNT, IIS, and LDAP. As I mentioned, the WinNT namespace
allows you to access NT information. IIS allows you to
connect to—you guessed it: IIS. The LDAP namespace allows
access to Active Directory information.
We can modify one line in the previous script to list
every available NT domain. Replace the third line of the
script with:
Set objServices=GetObject("WinNT:")
To extend that even further. change the same line to...
Set objServices=GetObject("WinNT://Domain")
...we will receive a listing of every resource in the
domain: Users, groups, and so on. As promised, my series
on ADSI scripting will start next month. Until then, happy
scripting!
About the Author
Chris Brooke, MCSE, is a contributing editor for Redmond magazine and director of enterprise technology for ComponentSource. He specializes in development, integration services and network/Internet administration. Send questions or your favorite scripts to [email protected].