Hack 14 Desktop Checker

 < Day Day Up > 

figs/expert.gif figs/hack14.gif

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 download this script as DesktopChecker.vbs from the O'Reilly web site at http://www.oreilly.com/catalog/winsvrhks/:

 '************************************************************** '*                                                            * '*  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 in this book.

 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... 

Dennis Abbott

 < Day Day Up > 


Windows Server Hacks
Windows Server Hacks
ISBN: 0596006470
EAN: 2147483647
Year: 2004
Pages: 163
Authors: Mitch Tulloch

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net