WMI/VBS/HTML System Information Script

Posted by Methical on Stack Overflow See other posts from Stack Overflow or by Methical
Published on 2009-08-01T00:29:17Z Indexed on 2010/04/09 1:03 UTC
Read the original article Hit count: 620

Filed under:
|
|
|

Hey guys; havin' a problem with this code here; can't seem to work out whats goin' wrong with it. All other variables seem to print fine in the HTML ouput; but I get an error that relates to the cputype variable. I get the following error

C:\Users\Methical\Desktop\sysinfo.vbs(235,1) Microsoft VBScript runtime error: Invalid procedure call or argument

I think it has somethin' to do with this line here

fileOutput.WriteLine "                                        <TR><TD width='30%' align='left' bgcolor='#e0e0e0'>CPU</TD><td width='70%' bgcolor=#f0f0f0 

align=left><i>" & cputype & "</i></td></tr>"

If i delete this line; the script compiles and outputs with no errors.

Here is the full code below

Dim strComputer, objWMIService, propValue, objItem
Dim strUserName, strPassword, colItems, SWBemlocator

' This section querries for the workstation to be scanned.
UserName = ""
Password = ""
strComputer = "127.1.1.1"
ImgDir = "C:\Scripts\images\"

'Sets up the connections and opjects to be used throughout the script.
Set SWBemlocator = CreateObject("WbemScripting.SWbemLocator")
Set objWMIService = SWBemlocator.ConnectServer(,"root\CIMV2",strUserName,strPassword)

'This determines the current date and time of the PC being scanned.
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_LocalTime", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly)
For Each objItem in colItems
    If objItem.Minute < 10 Then
        theMinutes = "0" & objItem.Minute
    Else
        theMinutes = objItem.Minute
    End If
    If objItem.Second < 10 Then
        theSeconds = "0" & objItem.Second
    Else
        theSeconds = objItem.Second
    End If
    DateTime = objItem.Month & "/" & objItem.Day & "/" & objItem.Year & " - " & objItem.Hour & ":" & theMinutes & ":" & theSeconds
Next

'Gets some ingomation about the Operating System including Service Pack level.
Set colItems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem",,48)
For Each objItem in colItems
    WKID = objItem.CSName
    WKOS = objItem.Caption
    CSD = objItem.CSDVersion
    Architecture = objItem.OSArchitecture
    SysDir = objItem.SystemDirectory
    SysDrive = objItem.SystemDrive
    WinDir = objItem.WindowsDirectory
    ServicePack = objItem.ServicePackMajorVersion & "." & objItem.ServicePackMinorVersion
Next

'This section returns the Time Zone
Set colItems = objWMIService.ExecQuery("Select * from Win32_TimeZone")
For Each objItem in colItems
    Zone = objItem.Description
Next

'This section displays the Shadow Storage information
Set colItems = objWMIService.ExecQuery("Select * from Win32_ShadowStorage")
For Each objItem in colItems
    Allocated = int((objItem.AllocatedSpace/1024)/1024+1)
    UsedSpace = int((objItem.UsedSpace/1024)/1024+1)
    MaxSpace = int((objItem.MaxSpace/1024)/1024+1)
Next

'This section returns the InstallDate of the OS
Set objSWbemDateTime = _
  CreateObject("WbemScripting.SWbemDateTime")
Set colOperatingSystems = _
    objWMIService.ExecQuery _
    ("Select * from Win32_OperatingSystem")
For Each objOperatingSystem _
    in colOperatingSystems
    objSWbemDateTime.Value = _
        objOperatingSystem.InstallDate
    InstallDate = _
        objSWbemDateTime.GetVarDate(False)
Next

'This section returns the Video card and current resolution.
Set colItems = objWMIService.ExecQuery("Select * from Win32_DisplayConfiguration",,48)
For Each objItem in colItems
    VideoCard = objItem.DeviceName
    Resolution = objItem.PelsWidth & " x " & objItem.PelsHeight & " x " & objItem.BitsPerPel & " bits"
Next

'This section returns the Video card memory.
Set objWMIService = GetObject("winmgmts:root\cimv2")
Set colItems = objWMIService.ExecQuery ("Select * from Win32_VideoController")
For Each objItem in colItems
    VideoMemory = objItem.AdapterRAM/1024/1024
Next

'This returns various system information including current logged on user, domain, memory, manufacture and model.
Set colItems = objWMIService.ExecQuery("Select * from Win32_ComputerSystem",,48)
For Each objItem in colItems
    UserName = objItem.UserName
    Domain = objItem.Domain
    TotalMemory = int((objItem.TotalPhysicalMemory/1024)/1024+1)
    Manufacturer = objItem.Manufacturer
    Model = objItem.Model
    SysType = objItem.SystemType
Next

'This determines the total hard drive space and free hard drive space.
Set colItems = objWMIService.ExecQuery("Select * from Win32_LogicalDisk Where Name='C:'",,48)
For Each objItem in colItems
    FreeHDSpace = Fix(((objItem.FreeSpace/1024)/1024)/1024)
    TotalHDSpace = Fix(((objItem.Size/1024)/1024)/1024)
Next

'This section returns the default printer and printer port.
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_Printer where Default=True", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly)
For Each objItem in colItems
    Printer = objItem.Name
    PortName = objItem.PortName
Next

'This returns the CPU information.
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_Processor", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly)
For Each objItem in colItems
    CPUDesc = LTrim(objItem.Name)
Next


'// CPU Info
For each objCPU in GetObject("winmgmts:{impersonationLevel=impersonate}\\" & strComputer & "\root\cimv2").InstancesOf("Win32_Processor")
    			Select Case objCPU.Family
    				Case 2
    					cputype = "Unknown"
    				Case 11
    					cputype = "Pentium brand"
    				Case 12
    					cputype = "Pentium Pro"
    				Case 13
    					cputype = "Pentium II"
    				Case 14
    					cputype = "Pentium processor with MMX technology"
    				Case 15
    					cputype = "Celeron "
    				Case 16
    					cputype = "Pentium II Xeon"
    				Case 17
    					cputype = "Pentium III"
    				Case 28
    					cputype = "AMD Athlon Processor Family"
    				Case 29
    					cputype = "AMD Duron Processor"
    				Case 30
    					cputype = "AMD2900 Family"
    				Case 31
    					cputype = "K6-2+"
    				Case 130
    					cputype = "Itanium Processor"
    				Case 176
    					cputype = "Pentium III Xeon"
    				Case 177
    					cputype = "Pentium III Processor with Intel SpeedStep Technology"
    				Case 178
    					cputype = "Pentium 4"
    				Case 179
    					cputype = "Intel Xeon"
    				Case 181
    					cputype = "Intel Xeon processor MP"
    				Case 182
    					cputype = "AMD AthlonXP Family"
    				Case 183
    					cputype = "AMD AthlonMP Family"
    				Case 184
    					cputype = "Intel Itanium 2"
    				Case 185
    					cputype = "AMD Opteron? Family"
    			End Select
Next

'This returns the current uptime (time since last reboot) of the system.
Set colOperatingSystems = objWMIService.ExecQuery ("Select * from Win32_OperatingSystem")
For Each objOS in colOperatingSystems
    dtmBootup = objOS.LastBootUpTime
    dtmLastBootupTime = WMIDateStringToDate(dtmBootup)
    dtmSystemUptime = DateDiff("h", dtmLastBootUpTime, Now)
    Uptime = dtmSystemUptime
Next
Function WMIDateStringToDate(dtmBootup)
    WMIDateStringToDate = CDate(Mid(dtmBootup, 5, 2) & "/" & Mid(dtmBootup, 7, 2) & "/" & Left(dtmBootup, 4) & " " & Mid (dtmBootup, 9, 2) & ":" & Mid(dtmBootup, 11, 

2) & ":" & Mid(dtmBootup,13, 2))
End Function

dim objFSO
Set objFSO = CreateObject("Scripting.FileSystemObject")

' -- The heart of the create file script -----------------------
' -- Creates the file using the value of strFile on Line 11
' --------------------------------------------------------------
Set fileOutput = objFSO.CreateTextFile( "x.html", true )

'Set fileOutput = objExplorer.Document

'This is the code for the web page to be displayed.

fileOutput.WriteLine "<html>"
fileOutput.WriteLine "    <head>"
fileOutput.WriteLine "        <title>System Information for '" & WKID & "' </title>"
fileOutput.WriteLine "    </head>"
fileOutput.WriteLine "    <body bgcolor='#FFFFFF' text='#000000' link='#0000FF' vlink='000099' alink='#00FF00'>"
fileOutput.WriteLine "        <center>"
fileOutput.WriteLine "            <h1>System Information for " & WKID & "</h1>"
fileOutput.WriteLine "            <table border='0' cellspacing='1' cellpadding='1' width='95%'>"
fileOutput.WriteLine "                <tr><td background='" & ImgDir & "blue_spacer.gif'>"
fileOutput.WriteLine "                    <table border='0' cellspacing='0' cellpadding='0' width='100%'>"
fileOutput.WriteLine "                        <tr><td>"
fileOutput.WriteLine "                            <table border='0' cellspacing='0' cellpadding='0' width='100%'>"
fileOutput.WriteLine "                                <tr>"
fileOutput.WriteLine "                                    <td width='5%' align='left' valign='middle' background='" & ImgDir & "blue_spacer.gif'><img src='" & ImgDir & 

"write.gif'></td>"
fileOutput.WriteLine "                                    <td width='95%' align='left' valign='middle' background='" & ImgDir & "blue_spacer.gif'> <font 

color='#FFFFFF' size='5'>WKInfo - </font><font color='#FFFFFF' size='3'>General information on the Workstation.</font></td>"
fileOutput.WriteLine "                                </tr>"
fileOutput.WriteLine "                                <tr><td colspan='2' bgcolor='#FFFFFF'>"
fileOutput.WriteLine "                                    <TABLE width='100%' cellspacing='0' cellpadding='2' border='1' bordercolor='#c0c0c0' 

bordercolordark='#ffffff' bordercolorlight='#c0c0c0'>"
    fileOutput.WriteLine"                                                <tr height=2><td height=10 align=center bgcolor=midnightblue colspan=3></td></tr>"
fileOutput.WriteLine "                                        <TR><TD align='center' bgcolor='#d0d0d0' colspan='2'><b><h3>Date and Time</h3></b></TD></TR>"
    fileOutput.WriteLine"                                                <tr height=2><td height=10 align=center bgcolor=midnightblue colspan=3></td></tr>"
fileOutput.WriteLine "                                        <TR><TD width='30%' align='left' bgcolor='#e0e0e0'>Date/Time</TD><td width='70%' bgcolor=#f0f0f0 

align=left><i>" & DateTime & "</i></td></tr>"
fileOutput.WriteLine "                                        <TR><TD width='30%' align='left' bgcolor='#e0e0e0'>System Uptime</TD><td width='70%' bgcolor=#f0f0f0 

align=left><i>" & Uptime & " hours</i></td></tr>"
fileOutput.WriteLine "                                        <TR><TD width='30%' align='left' bgcolor='#e0e0e0'>Time Zone</TD><td width='70%' bgcolor=#f0f0f0 

align=left><i>" & Zone & " </i></td></tr>"
    fileOutput.WriteLine"                                                <tr height=2><td height=10 align=center bgcolor=midnightblue colspan=3></td></tr>"
fileOutput.WriteLine "                                        <TR><TD align='center' bgcolor='#d0d0d0' colspan='2'><b><h3>General Computer 

Information</h3></b></TD></TR>"
    fileOutput.WriteLine"                                                <tr height=2><td height=10 align=center bgcolor=midnightblue colspan=3></td></tr>"
fileOutput.WriteLine "                                        <TR><TD width='30%' align='left' bgcolor='#e0e0e0'>Manufacturer</TD><td width='70%' bgcolor=#f0f0f0 

align=left><i>" & Manufacturer & "</i></td></tr>"
fileOutput.WriteLine "                                        <TR><TD width='30%' align='left' bgcolor='#e0e0e0'>Model</TD><td width='70%' bgcolor=#f0f0f0 

align=left><i>" & Model & "</i></td></tr>"
fileOutput.WriteLine "                                        <TR><TD width='30%' align='left' bgcolor='#e0e0e0'>System Based</TD><td width='70%' bgcolor=#f0f0f0 

align=left><i>" & SysType & "</i></td></tr>"
fileOutput.WriteLine "                                        <TR><TD width='30%' align='left' bgcolor='#e0e0e0'>Operating System</TD><td width='70%' bgcolor=#f0f0f0 

align=left><i>" & WKOS & " " & CSD & " " & Architecture & "</i></td></tr>"
fileOutput.WriteLine "                                        <TR><TD width='30%' align='left' bgcolor='#e0e0e0'>Operating System Install Date</TD><td width='70%' 

bgcolor=#f0f0f0 align=left><i>" & InstallDate & "</i></td></tr>"
fileOutput.WriteLine "                                        <TR><TD width='30%' align='left' bgcolor='#e0e0e0'>UserName</TD><td width='70%' bgcolor=#f0f0f0 

align=left><i>" & UserName & "</i></td></tr>"
fileOutput.WriteLine "                                        <TR><TD width='30%' align='left' bgcolor='#e0e0e0'>Workstation Name</TD><td width='70%' bgcolor=#f0f0f0 

align=left><i>" & WKID & "</i></td></tr>"
fileOutput.WriteLine "                                        <TR><TD width='30%' align='left' bgcolor='#e0e0e0'>Domain</TD><td width='70%' bgcolor=#f0f0f0 

align=left><i>" & Domain & "</i></td></tr>"
fileOutput.WriteLine "                                        <TR><TD width='30%' align='left' bgcolor='#e0e0e0'>System Drive</TD><td width='70%' bgcolor=#f0f0f0 

align=left><i>" & SysDrive & "</i></td></tr>"
fileOutput.WriteLine "                                        <TR><TD width='30%' align='left' bgcolor='#e0e0e0'>System Directory</TD><td width='70%' bgcolor=#f0f0f0 

align=left><i>" & SysDir & "</i></td></tr>"
fileOutput.WriteLine "                                        <TR><TD width='30%' align='left' bgcolor='#e0e0e0'>Windows Directory</TD><td width='70%' bgcolor=#f0f0f0 

align=left><i>" & WinDir & "</i></td></tr>"
fileOutput.WriteLine "                                        <TR><TD width='30%' align='left' bgcolor='#e0e0e0'>ShadowStorage Allocated Space</TD><td width='70%' 

bgcolor=#f0f0f0 align=left><i>" & Allocated & " MB</i></td></tr>"
fileOutput.WriteLine "                                        <TR><TD width='30%' align='left' bgcolor='#e0e0e0'>ShadowStorage Used Space</TD><td width='70%' 

bgcolor=#f0f0f0 align=left><i>" & UsedSpace & " MB</i></td></tr>"
fileOutput.WriteLine "                                        <TR><TD width='30%' align='left' bgcolor='#e0e0e0'>ShadowStorage Max Space</TD><td width='70%' 

bgcolor=#f0f0f0 align=left><i>" & MaxSpace & " MB</i></td></tr>"
    fileOutput.WriteLine"                                                <tr height=2><td height=10 align=center bgcolor=midnightblue colspan=3></td></tr>"
fileOutput.WriteLine "                                        <TR><TD align='center' bgcolor='#d0d0d0' colspan='2'><b><h3>General Hardware 

Information</h3></b></TD></TR>"
    fileOutput.WriteLine"                                                <tr height=2><td height=10 align=center bgcolor=midnightblue colspan=3></td></tr>"
fileOutput.WriteLine "                                        <TR><TD width='30%' align='left' bgcolor='#e0e0e0'>CPU</TD><td width='70%' bgcolor=#f0f0f0 

align=left><i>" & cputype & "</i></td></tr>"
fileOutput.WriteLine "                                        <TR><TD width='30%' align='left' bgcolor='#e0e0e0'>Memory</TD><td width='70%' bgcolor=#f0f0f0 

align=left><i>" & TotalMemory & " MB</i></td></tr>"
fileOutput.WriteLine "                                        <TR><TD width='30%' align='left' bgcolor='#e0e0e0'>Total HDD Space</TD><td width='70%' bgcolor=#f0f0f0 

align=left><i>" & TotalHDSpace & " GB</i></td></tr>"
fileOutput.WriteLine "                                        <TR><TD width='30%' align='left' bgcolor='#e0e0e0'>Free HDD Space</TD><td width='70%' bgcolor=#f0f0f0 

align=left><i>" & FreeHDSpace & " GB</i></td></tr>"
    fileOutput.WriteLine"                                                <tr height=2><td height=10 align=center bgcolor=midnightblue colspan=3></td></tr>"
fileOutput.WriteLine "                                        <TR><TD align='center' bgcolor='#d0d0d0' colspan='2'><b><h3>General Video Card 

Information</h3></b></TD></TR>"
    fileOutput.WriteLine"                                                <tr height=2><td height=10 align=center bgcolor=midnightblue colspan=3></td></tr>"
fileOutput.WriteLine "                                        <TR><TD width='30%' align='left' bgcolor='#e0e0e0'>Video Card</TD><td width='70%' bgcolor=#f0f0f0 

align=left><i>" & VideoCard & "</i></td></tr>"
fileOutput.WriteLine "                                        <TR><TD width='30%' align='left' bgcolor='#e0e0e0'>Resolution</TD><td width='70%' bgcolor=#f0f0f0 

align=left><i>" & Resolution & "</i></td></tr>"
fileOutput.WriteLine "                                        <TR><TD width='30%' align='left' bgcolor='#e0e0e0'>Memory</TD><td width='70%' bgcolor=#f0f0f0 

align=left><i>" & VideoMemory & " MB</i></td></tr>"
'This section lists all the current services and their status.
fileOutput.WriteLine "                                        <TR><TD align='center' bgcolor='#d0d0d0' colspan='2'><b><h3>Current Service 

Information</h3></b></TD></TR>"
fileOutput.WriteLine "                                        <tr><td colspan='2' bgcolor='#f0f0f0'>"
fileOutput.WriteLine "                                            <TABLE width='100%' cellspacing='0' cellpadding='2' border='1' bordercolor='#c0c0c0' 

bordercolordark='#ffffff' bordercolorlight='#c0c0c0'>"
fileOutput.WriteLine "                                                <TR><TD width='70%' align='center' bgcolor='#e0e0e0'><b>Service Name</b></td><TD width='30%' 

align='center' bgcolor='#e0e0e0'><b>Service State</b></td><tr>"
Set colRunningServices = objWMIService.ExecQuery("Select * from Win32_Service")
For Each objService in colRunningServices
fileOutput.WriteLine "                                            <TR><TD align='left' bgcolor='#f0f0f0'>" & objService.DisplayName & "</TD><td bgcolor=#f0f0f0 

align=center><i>" & objService.State & "</i></td></tr>"
    wscript.echo  "                                            <TR><TD align='left' bgcolor='#f0f0f0'>" & objService.DisplayName & "</TD><td bgcolor=#f0f0f0 

align=center><i>" & objService.State & "</i></td></tr>"
Next
fileOutput.WriteLine "                                            </table>"
fileOutput.WriteLine "                                        </td></tr>"
'This section lists all the current running processes and some information.
fileOutput.WriteLine "                                        <TR><TD align='center' bgcolor='#d0d0d0' colspan='2'><b><h3>Current Process 

Information</h3></b></TD></TR>"
fileOutput.WriteLine "                                        <tr><td colspan='2' bgcolor='#f0f0f0'>"
fileOutput.WriteLine "                                            <TABLE width='100%' cellspacing='0' cellpadding='2' border='1' bordercolor='#c0c0c0' 

bordercolordark='#ffffff' bordercolorlight='#c0c0c0'>"
fileOutput.WriteLine "                                                <TR><TD width='10%' align='center' bgcolor='#e0e0e0'><b>PID</b></td><TD width='35%' 

align='center' bgcolor='#e0e0e0'><b>Process Name</b></td><TD width='40%' align='center' bgcolor='#e0e0e0'><b>Owner</b></td><TD width='15%' align='center' 

bgcolor='#e0e0e0'><b>Memory</b></td></tr>"
Set colProcessList = objWMIService.ExecQuery("Select * from Win32_Process")
For Each objProcess in colProcessList
colProperties = objProcess.GetOwner(strNameOfUser,strUserDomain)
fileOutput.WriteLine "                                                <TR><TD align='center' bgcolor='#f0f0f0'>" & objProcess.Handle & "</td><TD align='center' 

bgcolor='#f0f0f0'>" & objProcess.Name & "</td><TD align='center' bgcolor='#f0f0f0'>" & strUserDomain & "\" & strNameOfUser & "</td><TD align='center' 

bgcolor='#f0f0f0'>" & objProcess.WorkingSetSize/1024 & " kb</td><tr>"
Next
fileOutput.WriteLine "                                            </table>"
fileOutput.WriteLine "                                        </td></tr>"
'This section lists all the currently installed software on the machine.
fileOutput.WriteLine "                                        <TR><TD align='center' bgcolor='#d0d0d0' colspan='2'><b><i>Installed Software</i></b></TD></TR>"
fileOutput.WriteLine "                                        <tr><td colspan='2' bgcolor='#f0f0f0'>"
Set colSoftware = objWMIService.ExecQuery ("Select * from Win32_Product")
For Each objSoftware in colSoftware
    fileOutput.WriteLine"                                            <TABLE width='100%' cellspacing='0' cellpadding='2' border='1' bordercolor='#c0c0c0' 

bordercolordark='#ffffff' bordercolorlight='#c0c0c0'>"
    fileOutput.WriteLine"                                                <tr><td width=30% align=center bgcolor='#e0e0e0'><b>Name</b></td><td width=30% align=center 

bgcolor='#e0e0e0'><b>Vendor</b></td><td width=30% align=center bgcolor='#e0e0e0'><b>Version</b></td></tr>"
    fileOutput.WriteLine"                                                <tr><td align=center bgcolor=#f0f0f0>" & objSoftware.Name & "</td><td align=center 

bgcolor=#f0f0f0>" & objSoftware.Vendor & "</td><td align=center bgcolor=#f0f0f0>" & objSoftware.Version & "</td></tr>"
    fileOutput.WriteLine"                                                <tr height=2><td height=10 align=center bgcolor=midnightblue colspan=3></td></tr>"
    fileOutput.WriteLine"                                            </table>"
Next
fileOutput.WriteLine "                                        </td></tr>"
fileOutput.WriteLine "                                    </table>"
fileOutput.WriteLine "                                </td></tr>"
fileOutput.WriteLine "                            </table>"
fileOutput.WriteLine "                        </td></tr>"
fileOutput.WriteLine "                    </table>"
fileOutput.WriteLine "                </td></tr>"
fileOutput.WriteLine "            </table>"
fileOutput.WriteLine "            <p><small></small></p>"
fileOutput.WriteLine "        </center>"
fileOutput.WriteLine "    </body>"
fileOutput.WriteLine "<html>"
fileOutput.close
WScript.Quit

© Stack Overflow or respective owner

Related posts about vbscript

Related posts about wmi