Update: How to get the Service Tag from your server using VB scripting

Filed Under (Windows Networking) by Just An Admin on 06-02-2009

This script was originally posted on the forum on http://www.adminscripteditor.com, but was brought to my attention as the better alternative to my Service Tag retrieval script. And I must agree that this script does a much better job in acquiring information to debug problems or for use by your 1st level helpdesk to add to reported issues, besides getting just the service tag…

Place the code below in a VBS file, ie GetInfo.vbs and run it.

[cc width=”600″ lang=”vb”]

On Error Resume Next

do while strcomputer = “” and a < 2
strcomputer = Inputbox (“Please enter IP address or Computer name”,”Remote Computer Information Display”,”IP is preferred search method”)
strcomputer = trim(strcomputer)
a = a + 1
if not strComputer <> “” then
wscript.echo “No computer name entered, ending script”
end if

On Error Resume Next
Set objWMIService = GetObject(“winmgmts:\\” & strComputer & “\root\CIMV2”)
if err.number <> 0 then
if err.number = -2147217405 then
wscript.echo “You do not have sufficient access rights to this computer”
wscript.echo “Could not locate computer” &vbcrlf& “Please check IP Address/Computer Name and try again”
end if
end if
Set colItems = objWMIService.ExecQuery(“SELECT * FROM Win32_BIOS”)
Set colItems1 = objWMIService.ExecQuery(“SELECT * FROM Win32_ComputerSystem”)
Set colItems2 = objWMIService.ExecQuery(“SELECT * FROM Win32_NetworkAdapterConfiguration Where IPEnabled = True”)
Set colitems3 = objWMIService.ExecQuery(“SELECT * FROM Win32_computersystem”)
Set colitems4 = objWMIService.ExecQuery(“SELECT * FROM Win32_NetworkLoginProfile”)
Set colitems5 = objWMIService.ExecQuery(“SELECT * FROM Win32_LogicalDisk Where DriveType = 3”)

Set objExplorer = CreateObject(“InternetExplorer.Application”)
objExplorer.Navigate “about:blank”
objExplorer.ToolBar = 0
objExplorer.StatusBar = 0
objExplorer.Width = 800
objExplorer.Height = 600
objExplorer.Left = 100
objExplorer.Top = 100
objExplorer.Visible = 1

Do While (objExplorer.Busy)

Set objDocument = objExplorer.Document
objDocument.Writeln “<html><head><title>Computer Information</title></head>”
objDocument.Writeln “<body bgcolor=’white’>”

‘ Computer Detals

For Each objItem In colItems
serial = objitem.serialnumber
For Each objItem In colItems1
hostname = objitem.caption
make = objitem.manufacturer
model = objitem.model

objDocument.Writeln “<FONT color=’red’ size=4>Computer Information For: ” & Ucase(hostname) & “</FONT><BR><BR>”
objDocument.Writeln “<FONT face=’Courier’ color=’black’>Serial : ” & Serial & “</FONT><BR>”
objDocument.Writeln “<FONT face=’Courier’ color=’black’>Make : ” & make & “</FONT><BR>”
objDocument.Writeln “<FONT face=’Courier’ color=’black’>Model : ” & Model & “</FONT><BR>”

For Each objItem In colItems5
driveletter = objitem.name
capacity = ((objitem.size / 1024) / 1024) / 1024
free = ((objitem.FreeSpace / 1024) / 1024) / 1024
free = FormatNumber (free,2)
capacity = FormatNumber (capacity,2)

objDocument.Writeln “<FONT face=’Courier’ color=’black’>Capacity of ” &driveletter& ” – ” & capacity & “GB</FONT><BR>”
objDocument.Writeln “<FONT face=’Courier’ color=’black’>Free Space on ” &driveletter& ” – ” & Free & “GB</FONT><BR>”


objDocument.Writeln “<BR><FONT color=’Blue’ size=4>Please Wait, gathering more information…</FONT><BR><BR>”

‘ User Details

For Each objItem In colItems3
loggedon = objitem.username
For Each objItem In colItems4
cachedlog = objitem.name
username = objitem.FullName
passwordexpire = objitem.passwordexpires
badpassword = objitem.badpasswordcount
if loggedon = cachedlog then
objDocument.Writeln “<FONT color=’red’ size=4>User Information For…</FONT><BR>”
objDocument.Writeln “<FONT color=’red’ size=4>” & username & “</FONT><BR><BR>”
objDocument.Writeln “<FONT face=’Courier’ color=’black’> User Name :” & loggedon &”</FONT><BR>”
objDocument.Writeln “<FONT face=’courier’ color=’black’> Incorrect Password Attempts : ” & badpassword &”</FONT><BR>”
on error resume next
Set objaccount = GetObject(“WinNT://**********/” &objitem.caption & “,user”)
if Err.Number <> 0 Then
objDocument.Writeln “<FONT face=’courier’ color=’black’>unable to retrieve password expiration information</FONT><BR>”
If objAccount.PasswordExpired = 1 Then
objDocument.Writeln “<FONT face=’courier’ color=’red’>Password has Expired!</FONT><BR>”
objDocument.Writeln “<FONT face=’courier’ color=’black’>Password Expires ” & objAccount.PasswordExpirationDate & ” </FONT><BR><BR>”
end if
end if
end if

‘ Network Adapter Details

For Each objItem In colItems2
ipaddress = objitem.ipaddress(0)
description = objitem.description
DHCP = objitem.DHCPserver
Domain = objitem.DNSdomain
mac = objitem.MACaddress
DNS = objitem.dnsserversearchorder(0)
DNS1 = objitem.dnsserversearchorder(1)
DNS2 = objitem.dnsserversearchorder(2)
wins1 = objitem.winsprimaryserver
wins2 = objitem.winssecondaryserver

if not ipaddress = “” then
objDocument.Writeln “<FONT color=’red’ size=4>Network Adapter Details For…</FONT><BR>”
objDocument.Writeln “<FONT color=’red’ size=4>” & description & “</FONT><BR><BR>”
objDocument.Writeln “<FONT face=’Courier’ color=’black’> IP Address :” & ipaddress &”</FONT><BR>”
objDocument.Writeln “<FONT face=’courier’ color=’black’> DHCP Server : ” & DHCP &”</FONT><BR>”
objDocument.Writeln “<FONT face=’courier’ color=’black’> Domain Name : ” & domain &”</FONT><BR>”
objDocument.Writeln “<FONT face=’courier’ color=’black’> MAC Address : ” & mac &”</FONT><BR>”
objDocument.Writeln “<FONT face=’courier’ color=’black’> Primary DNS : ” & DNS &”</FONT><BR>”
objDocument.Writeln “<FONT face=’courier’ color=’black’> Secondary DNS : ” & DNS1 &”</FONT><BR>”
objDocument.Writeln “<FONT face=’courier’ color=’black’> Tertiary DNS : ” & DNS2 &”</FONT><BR>”
objDocument.Writeln “<FONT face=’courier’ color=’black’> Primary WINS : ” & wins1 &”</FONT><BR>”
objDocument.Writeln “<FONT face=’courier’ color=’black’> Secondary WINS : ” & WINS2 &”</FONT><BR><BR>”
end if

objDocument.Writeln “<FONT color=’Blue’ size=4>Script Finished</FONT><BR><BR>”


Incoming search terms:

How to get the Service Tag from your server using VB scripting

Filed Under (Windows Networking) by Just An Admin on 30-01-2009

When contacting your hardware vendor to report a problem or order additional hardware, like disks or memory, you are often asked to provide the Service Tag. Off course you have the service tags well documented in your CMDB repository. In case your CMDB is not so up to date or lacking any content at all, this little script will grab the tag from any system name or IP you enter, as long as your an admin or allowed to run WMI queries against the system.

Read the rest of this entry »

Which account is locked or disabled today?

Filed Under (Windows Networking) by Just An Admin on 03-12-2008

In an earlier post a script was published which automatically sends users a warning message/mail when their password is about to expire.

A more simple approach would be to scan the AD for disabled and locked accounts manually or at a set interval, say each morning.

Read the rest of this entry »

Incoming search terms:

Exporting User account information from AD to Excel

Filed Under (Windows Networking) by Just An Admin on 13-06-2008

Our Active directory is, like with many other, the source of user information. You should think of address information, function/department. Every now and then the account information is verified and when in doubt, discussed. Having the information in a human readable form, such as an Excel sheet, makes it so much easier. The script below will export all user info from the Active Directory to an Excel sheet. Just run from a computer connected to the your domain with a user that is allowed to query the AD and watch the magic (gives me a smile every time is see it run).

Read the rest of this entry »

Incoming search terms:

Inventory computer serial numbers during logon

Filed Under (Windows Networking) by Just An Admin on 23-05-2008

Why did we write this script? IBM allows us to get the warranty status of our IBM systems and how long the warranty lasts. It also enables us to check if the extended warranty was registered correctly.

Lookup for a single system
Lookup for multiple systems

The compilation of a list or input file that contains the required fields for a ‘multiple systems lookup’ wasn’t as easy to do as we had hoped.

Read the rest of this entry »