Display the configuration of a remote system for troubleshooting

written by: Len Parov; article published: year 2007, month 04;



In: Categories » Computers and technology » Microsoft OS family » Display the configuration of a remote system for troubleshooting

Here's a useful script to quickly display the configuration of a remote system for troubleshooting or inventory purposes.

This handy script will attempt to gather various Windows NT/2000/XP/2003 operating-system attributes and display them in a coherent way to assist in troubleshooting. I highly suggest modifying the customization variables located within the script. To edit this text file, just open it with Notepad (leave Word Wrap turned off). Even if you have no experience with VBScript, you should find the changes quite easy to make. Please read the comments for different sections to make the tool viable for your organization.

This tool was intended to use only standard API calls and nothing from third-party COM objects. This keeps the tool lightweight and portable as only a text file. I suggest putting the tool into a local directory by itself so that the HTML pages it creates don't get out of hand. If a machine does not have WMI 1.5, then a lot of info might be missing. You will get similar results if you don't have administrator rights on the remote box. This script will not work on any Windows 9x operating systems.

The Code

You can save this script as DesktopChecker.vbs

'**************************************************************
'*                                                            *
'*  Desktop Checker - This script will ATTEMPT to gather      *
'*  various OS attributes and diplay them in a coherent       *
'*  way to assist in troubleshooting.  I highly suggest       *
'*  modifying the customization variables located 2 sections  *
'*  below.  Please read the comments for different sections   *
'*  to make the tool viable for your organization.  This      *
'*  tool was intended to use only standard API calls and      *
'*  nothing from 3rd party COM objects.  This keeps the       *
'*  tool lightwieght and portable as only a text file.        *
'*  I suggest putting the tool into a directory by itself     *
'*  so that the HTML pages it creates don't get out of hand.  *
'*  If a machine does not have WMI 1.5 then lots of info may  *
'*  be missing.                                               *
'*                                                            *
'*  Dennis Abbott                                             *
'*  speckled_trout@hotmail.com                                *
'*                                                            *
'**************************************************************
On Error Resume Next
Dim WshShell,WshFso,WshNet,WshSysEnv,IE,wmi,ADSIobj,OutPutFile,DumpFile
Dim PathToScript,ComSpec,Cnt,CompName,Company,Title,LogoLink,SelectServices, _
Domain,Progress,Instance,CurLine
Set WshShell = CreateObject("Wscript.Shell")
Set WshFso = CreateObject("Scripting.FileSystemObject")
Set WshNet = CreateObject("Wscript.Network")
Set WshSysEnv = WshShell.Environment("SYSTEM")
PathToScript = Left(WScript.ScriptFullName,(Len(WScript.ScriptFullName) - _ 
(Len(WScript.ScriptName) + 1)))
ComSpec = WshSysEnv("COMSPEC")
Cnt = 0
 
' grab contents of clipboard
' This allows you to work a LIST of boxes by cut-n-paste
Set IE = CreateObject("InternetExplorer.Application")
IE.Navigate("about:<script language=" & Chr(34)
& "vbscr" & "ipt" & Chr(34) & ">function go( ):document.all.it2.select"
 & "( ):document.execCommand " & 
Chr(34) & "Paste" & Chr(34) & ":en" & "d function</script><body 
onload=go( )>
<input type=t" & "ext value=" & Chr(34) & "start" & Chr(34) & " 
id=it2></body>")
While IE.ReadyState <> 4:Wend
CompName = IE.document.all.it2.value
IE.quit( )
Set IE = Nothing
 
' SET CUSTOMIZATION VARIABLES
Company = "myITforum"
Title = Company & " - Helpdesk Diagnostic Tool"
LogoLink = "http://www.myitforum.com/img/logo_final.gif"
' The next line alows you to query a variety of NT services of your choosing
' Make sure you enter the service NAME not the DISPLAY NAME, they can be
 different names
SelectServices = Array("WinMgmt","Norton Antivirus Server","DefWatch","clisvc","Dhcp")
Domain = "amd"  'Your NT domain
Progress = True 
'causes pop-up boxes when set to True it is silent when set to False
 
CompName = InputBox("Enter the name of the remote computer",Title,CompName)
If CompName = "" Then MsgBox "No machine name was entered.....goodbye" : _ Wscript.Quit(0)
Set wmi = GetObject("winmgmts:{impersonationLevel=impersonate}!//" & _ CompName)
Set ADSIobj = GetObject("WinNT://" & CompName & ",Computer")
 
Call PrepHTML(CompName)  'create an HTML file
 
If Progress Then
 WshShell.Popup "Getting OS information",2,Title, vbokonly + _
 vbsystemmodal
End If
Call GetOS(CompName)
If Progress Then
 WshShell.Popup "Getting NT administrators",2,Title, vbokonly + _
 vbsystemmodal
End If
Call GetAdmins(CompName)
If Progress Then
 WshShell.Popup "Checking Vital Services",2,Title, vbokonly + _
 vbsystemmodal
End If
Call Services(CompName,SelectServices)
If Progress Then
 WshShell.Popup "Checking Admin shares",2,Title, vbokonly + vbsystemmodal
End If
Call AdminShares(CompName)
If Progress Then
 WshShell.Popup "Getting date/time stamp",2,Title, vbokonly + _
 vbsystemmodal
End If
Call GetTime(CompName)
If Progress Then
 WshShell.Popup "Getting NetBIOS information",2,Title, vbokonly + _
 vbsystemmodal
End If
Call GetNBTstat(CompName)
If Progress Then
 WshShell.Popup "Pinging computer",2,Title, vbokonly + vbsystemmodal
End If
Call Ping(CompName)
If Progress Then
 WshShell.Popup "Getting Registry Quota",2,Title, vbokonly + _
 vbsystemmodal
End If
Call GetRegQuota(CompName)
If Progress Then
 WshShell.Popup "Getting Hardware information",2,Title, vbokonly + _
 vbsystemmodal
End If
Call GetHW(CompName)
If Progress Then
 WshShell.Popup "Getting Network Card information",2,Title, vbokonly + _
 vbsystemmodal
End If
Call GetNIC(CompName)
If Progress Then
 WshShell.Popup "Getting Software information",2,Title, vbokonly + _
 vbsystemmodal
End If
Call GetSW(CompName)
If Progress Then
 WshShell.Popup "Getting Critical NT Events",2,Title, vbokonly + _
 vbsystemmodal
End If
Call GetEvents(CompName)
Call ExitScript
 
Function PrepHTML(CompName)
 Set OutPutFile = WshFso.CreateTextFile(PathToScript & "\" & CompName _
 & ".html")
 OutPutFile.WriteLine "<body>"
 OutPutFile.WriteLine "<h1><center>" & Title & "</center></h1>"
 OutPutFile.WriteLine "<p><IMG SRC=" & Chr(34) & LogoLink & Chr(34) _
 & "</img></p>"
 OutPutFile.WriteLine "</p><p>" & "Account running this script is " _
 & WshNet.UserDomain & "\" & WshNet.UserName & " @ " _
 & Now & " from workstation " & WshNet.ComputerName & "</p>"
 OutPutFile.WriteLine "<p>Information on remote machine <b>\\" _
 & UCase(CompName) & "</b></p>"
 OutPutFile.WriteLine "<p><font color=red>To see information as it " _ 
 loads hit the REFRESH button on your web browser.</font></p>"
 OutPutFile.WriteLine "<hr>"
 WshShell.Run PathToScript & "\" & CompName & ".html"
End Function
 
Function GetOS(CompName)
 OutPutFile.WriteLine "<h3>1 - Operating System</h3>"
 OutPutFile.WriteLine "Operating System Version = " _
 & ADSIobj.OperatingSystem & " " & ADSIobj.OperatingSystemVersion & "<br>"
 For Each Instance in wmi.ExecQuery("Select * From Win32_OperatingSystem")
 OutPutFile.WriteLine "Operating System Caption = " _
 & Instance.Caption & "<br>"
 OutPutFile.WriteLine "Operating System Service Pack = " _
 & Instance.CSDVersion & "<br>"
 OutPutFile.WriteLine "Operating System LastBootUpTime = " _
 & StrDateTime(Instance.LastBootUpTime) & "<br>"
 OutPutFile.WriteLine "Operating System Directory = " _
 & Instance.WindowsDirectory & "<br>"
 Next
 OutPutFile.WriteLine "<hr>"
End Function
 
Function GetAdmins(CompName)
 Dim Admins,Admin
 Dim AdsInfo
 Set Admins = GetObject("WinNT://" & CompName & "/Administrators")
 OutPutFile.WriteLine "<h3>2 - Members of the local " _
 & "administrators group</h3>"
 OutPutFile.WriteLine "<table border=1><tr><td><b>Name</
b></td><td><b>Type</b></td><td><b>
Description</b></td></tr>"
 For Each Admin in Admins.Members
 Set AdsInfo = GetObject(Admin.adspath)
 OutPutFile.WriteLine "<tr><td>" & AdsInfo.Name & "</td><td>" _
 & AdsInfo.Class & "</td><td>" & AdsInfo.Description & "</td></tr>"
 Next
 OutPutFile.WriteLine "</table>"
 OutPutFile.WriteLine "<hr>"
End Function
 
Function Services(CompName,SelectServices)
 Dim Service,srvc,State,Strg
 OutPutFile.WriteLine "<h3>3 - Status of vital services</h3>"
 OutPutFile.WriteLine "<table border=1><tr><td><b>Service 
Name</b></td><td><b>Display Name</b></td><td>
<b>Status</b></td></tr>"
 For Each Service in SelectServices
 Strg = "<tr><td>" & Service & "</td><td></
td><td><b><font color=FF0000>NOT PRESENT</font></b></
td></tr>"
 ADSIobj.Filter = Array("Service")
 For Each srvc in ADSIobj
 Select Case srvc.Status
 Case 1 State = "<font color=FF0000>STOPPED</font>"
 Case 2 State = "<font color=FF0000>START_PENDING</font>"
 Case 3 State = "<font color=FF0000>STOP_PENDING</font>"
 Case 4 State = "RUNNING"
 Case 5 State = "<font color=FF0000>CONTINUE_PENDING</font>"
 Case 6 State = "<font color=FF0000>PAUSE_PENDING</font>"
 Case 7 State = "<font color=FF0000>PAUSED</font>"
 Case Else State = "<font color=FF0000>ERROR</font>"
 End Select
 If LCase(srvc.Name) = LCase(Service) Then Strg = _
 "<tr><td>" & srvc.Name & "</td><td>" &
 srvc.DisplayName _
 & "</td><td>" & State & "</tr></td>"
 Next
 OutPutFile.WriteLine Strg 
 Next
 OutPutFile.WriteLine "</table>"
 OutPutFile.WriteLine "<hr>"
End Function
 
Function AdminShares(CompName)
 Dim Shares
 OutPutFile.WriteLine "<h3>4 - Status of administrative shares</h3>" 
 Shares = True
 If WshFso.FolderExists("\\" & CompName & "\c$") = True Then
 OutPutFile.WriteLine "C$ share exists<br>"
 Else
 Shares = False
 OutPutFile.WriteLine "<font color=red>C$ share is not " _
 & "accessible</font><br>"
 End If
 If WshFso.FolderExists("\\" & CompName & "\admin$") = True Then
 OutPutFile.WriteLine "admin$ share exists<br>"
 Else
 Shares = False
 OutPutFile.WriteLine "<font color=red>admin$ share is not " _
 & "accessible</font><br>"
 End If
 If Shares = False Then
 OutPutFile.WriteLine "<br>"
 OutPutFile.WriteLine "<font color=red>Shares made not be " _
 & "accessible due to the folowing reasons:</font><br>"
 OutPutFile.WriteLine "<font color=red>a - You do not have " _
 & "admin rights on this box</font><br>"
 OutPutFile.WriteLine "<font color=red>b - box is offline</font><br>"
 OutPutFile.WriteLine "<font color=red>c - Server service is not " _
 & "running</font><br>"
 OutPutFile.WriteLine "<font color=red>d - Shares have been " _
 & "disabled</font><br>"
 OutPutFile.WriteLine "<font color=red>e - remote machine's " _
 & "operating system is not NT-based</font><br>"
 End If
 OutPutFile.WriteLine "<hr>"
End Function
 
Function GetTime(CompName)
 OutPutFile.WriteLine "<h3>5 - Current date and time</h3>" 
 OutPutFile.WriteLine "Current date and time of a domain controller<br>"
 WshShell.Run ComSpec & " /c net time /DOMAIN:" & Domain & " >" _
 & PathToScript & "\time.txt",6,True 
 Set DumpFile = WshFso.OpenTextFile(PathToScript & "\time.txt", 1, True)
 Do While DumpFile.AtEndOfStream <> True
 CurLine = DumpFile.ReadLine
 If InStr(CurLine,"Current") <> 0 Then
 OutPutFile.WriteLine CurLine & "<br>"
 End If
 Loop
 DumpFile.Close
 OutPutFile.WriteLine "Current date and time of computer you are " _
 & "troubleshooting<br>"
 WshShell.Run ComSpec & " /c net time \\" & CompName " _
 & " >" & PathToScript & "\time.txt",6,True 
 Set DumpFile = WshFso.OpenTextFile(PathToScript & "\time.txt", 1, True)
 Do While DumpFile.AtEndOfStream <> True
 CurLine = DumpFile.ReadLine
 If InStr(CurLine,"Current") <> 0 Then
 OutPutFile.WriteLine CurLine & "<br>"
 End If
 Loop
 DumpFile.Close
 OutPutFile.WriteLine "<hr>"
End Function
 
Function Ping(CompName)
 OutPutFile.WriteLine "<h3>7 - Ping test (DNS name resolution)</h3>"
 OutPutFile.WriteLine "<h4>If you get no reply on the ping yet other data is 
retrieved on this page then there is most likely a problem with a static DNS entry. 
This needs to be fixed before anything else.  You MUST VERIFY the machine is running 
DHCP before 
you modify the static DNS entry!!!!</h4>"
 WshShell.Run ComSpec & " /c ping " & CompName & " >" & 
PathToScript & _
 "\ping.txt",6,True 
 Set DumpFile = WshFso.OpenTextFile(PathToScript & "\ping.txt", 1, True)
 Do While DumpFile.AtEndOfStream <> True
 OutPutFile.WriteLine DumpFile.ReadLine & "<br>"
 Loop
 Set DumpFile = Nothing
 OutPutFile.WriteLine "<hr>"
End Function
 
Function GetNBTstat(CompName)
 Dim User
 User = "Nobody Logged On" 
 WshShell.Run ComSpec & " /c nbtstat -a " & CompName & " >" & 
PathToScript & "\nbt.txt",6,True 
 Set DumpFile = WshFso.OpenTextFile(PathToScript & "\nbt.txt", 1, True)
 Do While DumpFile.AtEndOfStream <> True
 CurLine = DumpFile.ReadLine
 If InStr(CurLine,"---") <> 0 Then
 CurLine = DumpFile.ReadLine
 CompName = Trim(Left(CurLine,InStr(CurLine,"<")-1))
 End If
 If InStr(CurLine,"<03>") <> 0 Then
 If Trim(Left(CurLine,InStr(CurLine,"<03>")-1)) <> _
 UCase(CompName) and _
 Trim(Left(CurLine,InStr(CurLine,"<03>")-1)) <> _
 UCase(CompName) & "$" Then
 User = Trim(Left(CurLine,InStr(CurLine,"<03>")-1))
 End If
 End If
 If InStr(CurLine,"<1E>") <> 0 Then
 If Trim(Left(CurLine,InStr(CurLine,"<1E>")-1)) <> UCase(CompName) 
and Trim(Left(CurLine,InStr(CurLine,"<1E>")-1)) <> UCase(CompName) & "$" 
Then
 Domain = Trim(Left(CurLine,InStr(CurLine,"<1E>")-1))
 End If
 End If
 Loop
 OutPutFile.WriteLine "<h3>6 - NetBIOS Info</h3>"
 OutPutFile.WriteLine "Current User Logged on = " & User & " (this value may 
not be accurate, it depends on the box's messenger service)<br>"
 OutPutFile.WriteLine "Domain machine is joined to = " & Domain & "<br>"
 DumpFile.Close
 OutPutFile.WriteLine "<hr>"
End Function
 
Function GetNIC(CompName)
 OutPutFile.WriteLine "<h3>9 - Network Card Configuration</h3>"
 For Each Instance in wmi.ExecQuery("Select * From Win32_" & _
 "NetworkAdapterConfiguration Where IPenabled = 'True'")
 OutPutFile.WriteLine "<table border=1><tr><td><b>" & _
 "Attribute</b></td><td><b>Value</b></td></tr>"
 OutPutFile.WriteLine "<tr><td>Name of card</td><td>" _
 & Instance.Caption & "</td></tr>"
 OutPutFile.WriteLine "<tr><td>DHCP Enabled</td><td>" _
 & Instance.DhcpEnabled & "</td></tr>"
 OutPutFile.WriteLine "<tr><td>IP address</td><td>" _
 & Instance.IPAddress(0) & "</td></tr>"
 OutPutFile.WriteLine "<tr><td>Subnet Mask</td><td>" _
 & Instance.IPSubnet(0) & "</td></tr>"
 OutPutFile.WriteLine "<tr><td>MAC Address</td><td>" _
 & Instance.MACAddress & "</td></tr>"
 OutPutFile.WriteLine "<tr><td>DNS HostName</td><td>" _
 & Instance.DNSHostname & "</td></tr>"
 OutPutFile.WriteLine "<tr><td>DNS Servers(in order)</td><td>" _
 & Instance.DNSServerSearchOrder(0) & " : " _
 & Instance.DNSServerSearchOrder(1) & "</td></tr>"
 OutPutFile.WriteLine "<tr><td>Primary WINS</td><td>" _
 & Instance.WINSPrimaryServer & "</td></tr>"
 OutPutFile.WriteLine "<tr><td>Secondary WINS</td><td>" _
 & Instance.WINSSecondaryServer & "</td></tr>"
 OutPutFile.WriteLine "</table>"
 Next
 OutPutFile.WriteLine "<hr>"
End Function
 
Function GetRegQuota(CompName)
 OutPutFile.WriteLine "<h3>8 - Registry size information</h3>"
 For each Instance in wmi.InstancesOf("Win32_Registry")
 OutPutFile.WriteLine "Current Registry size is " _
 & Instance.CurrentSize & " MB's.<br>"
 OutPutFile.WriteLine "Maximum Registry size is " _
 & Instance.MaximumSize & " MB's.<br>"
 If Instance.MaximumSize - Instance.CurrentSize < 8 Then
 OutPutFile.WriteLine "<font color=red><b>The Registry quota on " _
 & CompName & " may need to be increased!!!</font></b><br>"
 End If
 Next
 OutPutFile.WriteLine "<hr>"
End Function
 
Function GetHW(CompName)
 Dim stuff
 OutPutFile.WriteLine "<h3>10 - Hardware Information</h3>"
 For Each Instance in wmi.ExecQuery("Select * From Win32_" & _
 "LogicalDisk Where DeviceID = 'C:'")
 OutPutFile.WriteLine "Total Drive space available on C: is " &  Left(Instance.
FreeSpace/1000000,InStr(Instance.FreeSpace/1000000, ".")-1) & " Megabytes.<br>"
 stuff = ((Instance.Size - Instance.FreeSpace)/Instance.Size)*100
 OutPutFile.WriteLine "The C: drive is " _
 & Left(stuff,InStr(stuff, ".")-1) & "% full.<br>"
 Next
 For Each Instance in wmi.ExecQuery("Select * From Win32_ComputerSystem")
 OutPutFile.WriteLine "Computer Manufacturer = " _
 & Instance.Manufacturer & "<br>"
 OutPutFile.WriteLine "Computer Model = " & Instance.Model & "<br>"
 OutPutFile.WriteLine "Total Physical Memory = " & Left
(Instance.TotalPhysicalMemory/1000000,InStr(Instance.TotalPhysicalMemory/1000000,".")-1) 
& " MB's" & "<br>"
 Next
 For Each Instance in wmi.ExecQuery("Select * From Win32_" & _
 "SystemEnclosure")
 OutPutFile.WriteLine "Asset Tag = " & Instance.SMBIOSassettag " _
 & "<br>"
 OutPutFile.WriteLine "Serial Number = " & Instance.serialnumber " _
 & "<br>"
 Next
 For Each Instance in wmi.ExecQuery("Select * From Win32_Processor")
 OutPutFile.WriteLine "Processor Name = " & Instance.Name & "<br>"
 OutPutFile.WriteLine "Processor Clock Speed = " _
 & Instance.CurrentClockSpeed & " MHz<br>"
 OutPutFile.WriteLine "Processor Voltage = " _
 & Instance.CurrentVoltage & " Volts<br>"
 OutPutFile.WriteLine "Current Processor Load = " _
 & Instance.LoadPercentage & "%<br>"
 Next
 OutPutFile.WriteLine "<hr>"
End Function
 
Function GetSW(CompName)
 Dim oReg
 Dim NavParent,PatternDate,NavDir,NavVer,IEVersion,program,installed,
 Version,ProgramName
 OutPutFile.WriteLine "<h3>11 - Software Information</h3>"
 Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!//" _
 & CompName & "/root/default:StdRegProv")
 oReg.getstringvalue 2147483650,"SOFTWARE\INTEL\LANDesk\VirusProtect6\CurrentVersion\",
"Parent",NavParent
 oReg.getstringvalue 2147483650,"SOFTWARE\Symantec\SharedDefs\", _
 & "NAVCORP_70",PatternDate
 oReg.getstringvalue 2147483650,"SOFTWARE\Symantec\InstalledApps\" & _
 ","NAV",NavDir
 If UCase(Left(NavDir,1)) = "C" Then
 NavVer = WshFso.GetFileVersion("\\" & CompName & "\c$\" _
 & Right(NavDir,Len(NavDir)-3) & "\vpc32.exe")
 OutPutFile.WriteLine "Norton Antivirus Version = " &  NavVer  _
 & "<br>"
 End If
 PatternDate = Right(PatternDate,12)
 OutPutFile.WriteLine "Norton Antivirus Parent Server = " & NavParent _
 & "<br>"
 OutPutFile.WriteLine "Norton Antivirus Definition Date = " _
 & Mid(PatternDate,5,2) & "/" & Mid(PatternDate,7,2) & "/" & 
Mid(PatternDate,1,4) & " Revision " & Right(PatternDate,3) & "<br>"
 oReg.getstringvalue 2147483650,"SOFTWARE\Microsoft\Internet Explorer\" & _
 ","Version",IEVersion
 OutPutFile.WriteLine "<p>Internet Explorer Version = " & IEVersion
 OutPutFile.WriteLine "<p>Installed Programs(from Add/Remove Programs applet)</
p>"
 OutPutFile.WriteLine "<table border=1><tr><td><b>Program 
Name</b></td><td><b>Version(if available)</b></td></
 tr>"
 oReg.EnumKey 2147483650, "SOFTWARE\Microsoft\Windows\CurrentVersion\" & _
 "Uninstall", installed
 For each program in installed
 oReg.getstringvalue 2147483650,"SOFTWARE\Microsoft\Windows\" & _
 "CurrentVersion\Uninstall\" & program & "\","DisplayName",ProgramName
 oReg.getstringvalue 2147483650,"SOFTWARE\Microsoft\Windows\" & _
 "CurrentVersion\Uninstall\" & program & "\","DisplayVersion",Version
 If ProgramName <> "" Then
 OutPutFile.WriteLine "<tr><td>" & ProgramName & "</
td><td>" & Version & "</td></tr>"
 End If
 Next
 OutPutFile.WriteLine "</table>"
 OutPutFile.WriteLine "<hr>"
End Function
 
Function GetEvents(CompName)
 OutPutFile.WriteLine "<h3>12 - First 25 Errors from the system event log</h3>"
 OutPutFile.WriteLine "<table border=1><tr><td><b>DateTimeStamp
</b></td><td><b>EventSource</b></td><td><b>
Message</b></td></tr>"
 For Each Instance in wmi.ExecQuery("Select * From Win32_NTLogEvent Where Type = 
'Error' and LogFile = 'System'")
 Cnt = Cnt + 1
 If Cnt = 25 Then Exit For
 OutPutFile.WriteLine "<tr><td>" & Mid(Instance.TimeGenerated,5,2) " _
 & "-" & Mid(Instance.TimeGenerated,7,2) & "-" _
 & Left(Instance.TimeGenerated,4) & "</td><td>" _
 & Instance.SourceName & "</td><td>" & Instance.Message & "</td></tr>"
 Next
 OutPutFile.WriteLine "</table>"
End Function
Function StrDateTime(d)
 Dim strVal,strDate,strTime
 strVal = CStr(d)
 strDate = DateSerial(Left(strVal, 4), _
 Mid(strVal, 5, 2), _
 Mid(strVal, 7, 2))
 strTime = TimeSerial(Mid(strVal, 9, 2), _
 Mid(strVal, 11, 2), _
 Mid(strVal, 13, 2))
 StrDateTime = strDate + strTime
End Function
 
Function ExitScript
 OutPutFile.WriteLine "</body>"
 OutPutFile.Close
 WshShell.Run PathToScript & "\" & CompName & ".html"
 If Progress Then 
 MsgBox "The " & Title & " script is done.",vbokonly + _
 vbsystemmodal,Title
 End If
 Set WshShell = Nothing
 Set WshFso = Nothing
 Set WshNet = Nothing
 Set OutPutFile = Nothing
 Wscript.Quit(0)
End Function
 

Running the Hack

To run this hack, simply double-click on the DesktopChecker.vbs file in Windows Explorer (or on a shortcut to the file on your desktop). Then, type the name of the remote computer you want to query using either its NetBIOS name, DNS name, or IP address. At this point, Internet Explorer will open and display a page titled "myITforum Helpdesk Diagnostic Tool," followed by a series of dialog boxes that show the progress of the script (you don't need to click OK to close these dialog boxes, because they close automatically). Once the final dialog box appears—"The myITforum Helpdesk Diagnostic Tool script is done"—click OK and refresh the web page to view the information.

Here's some sample output generated when the script was run on a workstation using Domain Admin credentials. The target machine is a Windows Server 2003 machine named SRV230. The output of the script is in the form of an HTML page named srv230.htm, which is created in the same directory where the script itself resides, but the output has been reformatted here as text to make it easier to include:

myITforum - Helpdesk Diagnostic Tool
Account running this script is MTIT2\administrator @ 12/3/2003 11:40:37 AM from 
workstation
SRV235
Information on remote machine \\SRV230
To see information as it loads hit the REFRESH button on your web browser.
----------------------------------------------------------------------------
1 - Operating System
Operating System Version = Windows NT 5.2
Operating System Caption = Microsoft(R) Windows(R) Server 2003, Enterprise Edition
Operating System Service Pack = 
Operating System LastBootUpTime = 12/3/2003 11:26:42 AM
Operating System Directory = C:\WINDOWS
----------------------------------------------------------------------------
2 - Members of the local administrators group
Name               Type   Description 
Administrator      User   Built-in account for administering the computer/domain 
Enterprise Admins  Group  Designated administrators of the enterprise 
Domain Admins      Group  Designated administrators of the domain 
----------------------------------------------------------------------------
3 - Status of vital services
Service Name             Display Name                        Status 
winmgmt                  Windows Management Instrumentation  RUNNING 
Norton Antivirus Server                                      NOT PRESENT 
DefWatch                                                     NOT PRESENT 
clisvc                                                       NOT PRESENT 
Dhcp                     DHCP Client                         RUNNING 
----------------------------------------------------------------------------
4 - Status of administrative shares
C$ share exists
admin$ share exists
----------------------------------------------------------------------------
5 - Current date and time
Current date and time of a domain controller
Current date and time of computer you are troubleshooting
----------------------------------------------------------------------------
6 - NetBIOS Info
Current User Logged on = Nobody Logged On (this value may not be accurate, it depends on 
the box's messenger service)
Domain machine is joined to = amd
----------------------------------------------------------------------------
7 - Ping test (DNS name resolution)
If you get no reply on the ping yet other data is retrieved on this page then there is 
most likely a problem with a static DNS entry. This needs to be fixed before anything 
else. 
You MUST VERIFY the machine is running DHCP before you modify the static DNS entry!!!!
----------------------------------------------------------------------------
8 - Registry size information
Current Registry size is 1 MB's.
Maximum Registry size is 88 MB's.
----------------------------------------------------------------------------
10 - Hardware Information
Total Drive space available on C: is 1776 Megabytes.
The C: drive is 58% full.
Computer Manufacturer = System Manufacturer
Computer Model = System Name
Total Physical Memory = 536 MB's
Asset Tag = Asset-1234567890
Serial Number = Chassis Serial Number
Processor Name = Intel(R) Pentium(R) III processor
Processor Clock Speed = 501 MHz
Processor Voltage = 29 Volts
Current Processor Load = 2%
----------------------------------------------------------------------------
9 - Network Card Configuration
Attribute              Value 
Name of card           [00000001] 3Com EtherLink XL 10/100 PCI For Complete PC Management 
NIC (3C905C-TX) 
DHCP Enabled           False 
IP address             172.16.11.230 
Subnet Mask            255.255.255.0 
MAC Address            00:01:02:FC:92:FC 
DNS HostName           srv230 
DNS Servers(in order)  172.16.11.230 : 
Primary WINS 
Secondary WINS 
----------------------------------------------------------------------------
11 - Software Information
Norton Antivirus Parent Server = 
Norton Antivirus Definition Date = // Revision 
Internet Explorer Version = 6.0.3790.0 
Installed Programs(from Add/Remove Programs applet)
 
Program Name                                                     Version(if available) 
FullShot V6 
Windows Media Player Hotfix [See wm819639 for more information] 
Remote Administration Tools                                      5.2.3790.0 
----------------------------------------------------------------------------
12 - First 25 Errors from the system event log
DateTimeStamp  EventSource  Message 
11-21-2003     W32Time      The time provider NtpClient is configured to acquire time 
from one or more time sources, however none of the sources are currently accessible. No 
attempt to contact a source will be made for 15 minutes. NtpClient has no source of 
accurate time. 
11-13-2003     DCOM         The server {A9E69610-B80D-11D0-B9B9-00A0C922E750} did not 
register with DCOM within the required timeout. 
etc...
 
 

legal disclaimer

1) Our website is not responsible for the information contained by this article as well for any and all copyright infringements by authors and writers. E-articles is a free information resource. If you suspect this article for any copyright infringements, please read the Terms of service and contact us to investigate the problem.
2) The E-articles directory team is not responsible for inaccuracies, falsehoods, or any other types of misinformation this tutorial may contain and will not be liable for any loss or damage suffered by a user through the user's reliance on the information gained here. Please read the Terms of service

Useful tools and features

Translate this article to...    Send this article to you or to a friend

Link to this article from your page   
If you like this article (tutorial), please link to it from your web page using the information above. Linking to this page, this is the only way to help us improve our service, the same time providing your visitors with a way to improve their online experience.

related articles

1. MS DOS Versus PC DOS
With modern PCs having a very high level of standardization and compatibility, today it is easy to see how Microsoft can market complete packaged operating systems that will install and work unmodified on practically any PC you can purchase or build. Without the standardization and compatibility we have come to depend on, different specific "flavors" of a given operating system would be required for specific different hardware. That is exactly how things were back in the early '80s when the IBM PC was introduced. Many o...

2. How to make your PC Available for Remote Desktop Connection
To use Remote Desktop to reach your computer from the Internet, both the computer and your Internet connection must always be up and running. In addition, you must be able to make connections from the outside world to your computer, so there are additional requirements: If you use dial-up Internet service, you'll need someone at home to establish the connection before you can connect to your computer. If you use cable or DSL Internet service, you must either have a static IP address ass...

3. How to Update DirectX ~ Advantages
Although most Windows applications place fairly low demands on the display system, putting up fairly static displays and updating them relatively infrequently, interactive games and video displays are very graphics intensive. Game players pay big bucks for fps, or frames per second, which is a measure of how fast the hardware and software can generate new images as the scene changes and objects move. Under about 30fps, the image flickers and motion is noticeably jerky. Beyond 30fps, faster updates aren't noticeable, and the e...

4. Using Simple File Sharing in Windows
Although most home users are typically happy letting anyone at any computer read or modify any file, business users need to restrict access to files with payroll, personnel, and proprietary information. Windows XP and its predecessors, Windows NT and Windows 2000, were primarily designed for business use, so they require usernames and passwords for identification, and have a security system that lets computer owners restrict access to sensitive files on a user-by-user and file-by-file basis on each computer. Unfortunate...

5. The Evolution of Microsoft Windows ~ The Windows 9x Family
By the mid-1990s, processor power had increased and memory prices had decreased dramatically since Windows' original release. The Internet had also sprung onto the world stage, from an academic tool to an instrument of global communication and commerce. (You may recall that Windows 3.1 did not even include support for the TCP/IP network protocol used on the Internetyou had to purchase it from a third-party vendor.) Users' expectations likewise had grown with computers' capabilities, and desktop publishing, graphics editing, and...

6. How to install Windows and Installation Types
Deciding on the type of installation to perform is dictated by many factors, such as the following: Is there an operating system currently installed? If so, do you want to preserve settings and configurations, or start from scratch? Will the installation be performed interactively or remotely? How many computers are to be installed at a single time? Is your network arranged in a domain model using Active Directory? These are ...

7. How to adjust Text Icons and Window Element Sizes
If you find the items on the screen difficult to read or see, you can either lower the screen resolution, which makes everything larger but blurrier, or ask Windows to make the elements themselves larger while keeping a crisper, high screen resolution. There are two ways you can do this. Here's the first procedure: 1. Right-click the Desktop and select Properties. 2. Save the current screen settings so if you're unhappy with the results, you can back the changes out. Select the Themes tab, click Save As, and enter ...

8. DOS Versions
Let's take a look at the actual nuts and bolts that constituted each version of DOS. DOS 1.x PC DOS 1.0 was introduced along with the IBM PC on August 12, 1981, and supported only single-sided 5.25-inch drives. Floppy disks were formatted using 8 sectors per track (one side, 40 tracks) resulting in a capacity of only 160KB when formatted. There was no support for hard disks at all, which were generally quite rare for personal computers at the time. DOS was a text-based operating system, hence there was no graphi...

9. How to Back Up and Restore the Windows Registry
Before diving into Registry modifications, I'll talk about backing them up. Every computer book I've seen stresses these facts: 1. There is no Undo key in the Registry Editor. 2. Improper changes to the Registry can keep Windows from booting, or can make subsystems fail to work....

10. How to Configure Multiple Monitors under Windows
Windows quite nicely supports the use of two or more monitors; Windows can stretch your desktop across up to 16 of them. Sixteen may be overkill, but even two 15" monitors, with about the same area as one 21" monitor, make it easier to stretch out several application windows. And you should see what three 21" monitors in a row look like! To get a multiple monitor setup, you'll need to install multiple display adapters, use a display adapter that supports more than one monitor (a "dual head" or "quad head...