Pc Inventory Script: Obtains system information into HTML file and optionally displays or emails the results.
http://techsupt.winbatch.com/webcgi/webbatch.exe?techsupt%2Ftsleft.web+WinBatch%2FWMI%2FUser%7ESample%7ECode+PC%7EInventory.txt;***************************************************************************
;** PC Inventory
;**
;**
;** Purpose: Obtains system information into HTML file and optionally displays or emails the results.
;** Inputs: SMTP server information as variables
;** Outputs: Optionally displays or emails the results.
;** System Requirements: Postie Extender. WinBatch 2010B or newer. Windows Vista or newer.
;**
;** Revisions: 2013.10.2 Deana Falk
;***************************************************************************
If Version( )< '2010B'
Pause('Notice', 'Need 2010B or Newer Version of WinBatch')
Exit
EndIf
ver = WinVersion( 5 )
If ver < "2-6-0"
Pause('Notice', 'This script is designed for Windows Vista and newer.')
Exit
EndIf
#DefineFunction udfWMIDataArray( class, properties )
ParseData( StrReplace( properties, ',', ' ' ) )
propcount = param0
arrData = ArrDimension(2, propcount)
ArrInitialize(arrData, 'NA')
strComputer = "."
query = "Select * from " : class
objWMIService = GetObject("winmgmts:\\" : strComputer : "\root\cimv2")
colItems = objWMIService.ExecQuery(query)
instcount = colitems.Count
instance = 1
ForEach objItem In colItems
If ObjectTypeGet(objItem)=="EMPTY" Then Continue
For i=0 To param0-1
n = i+1
propname = param%n%
arrData[0,i] = propname
arrData[instance,i] = objItem.%propname%
Next
; Handle multiple instances
If instcount > instance
ArrayRedim( arrData, ArrInfo(arrData,1)+1, -1 )
instance = instance+1
EndIf
Next
Return arrData
#EndFunction
#DefineFunction udfConvertToHTMLTable( arrData )
rowcount = ArrInfo( arrData, 1 )
colcount = ArrInfo( arrData, 2 )
htmlData = '<table width="500" border="1">'
;Pause( rowcount, colcount)
For row = 0 To ArrInfo( arrData, 1 ) - 1
htmlData = htmlData : '<tr>'
For col = 0 To ArrInfo( arrData, 2 ) - 1
htmlData = htmlData : '<td>'
If ObjectTypeGet( arrData[row,col] ) == 'ARRAY|VARIANT'
data = udfArrayToList(arrData[row,col],'|')
Else
data = arrData[row,col]
EndIf
htmlData = htmlData : data
htmlData = htmlData : '</td>'
Next
htmlData = htmlData : '</tr>'
Next
htmlData = htmlData : '</table>'
Return htmlData
#EndFunction
#DefineFunction udfConvertToHTMLTableEx( arrData )
; Beautified version of the table
rowcount = ArrInfo( arrData, 1 )
colcount = ArrInfo( arrData, 2 )
htmlData = '<table width="auto" border="1" cellpadding="3" cellspacing="0">'
;Pause( rowcount, colcount)
For row = 0 To ArrInfo( arrData, 1 ) - 1
; Alternate Row Color
If row == 0 ;Heading only
htmlData = htmlData : '<tr bgcolor="CornflowerBlue">' ; #6495ED
ElseIf (row mod 2) == 0 ;even numbered row
htmlData = htmlData : '<tr bgcolor="LightGray">' ; #D3D3D3
Else
htmlData = htmlData : '<tr>'
EndIf
For col = 0 To ArrInfo( arrData, 2 ) - 1
htmlData = htmlData : '<td align="left">'
If ObjectTypeGet( arrData[row,col] ) == 'ARRAY|VARIANT'
data = udfArrayToList(arrData[row,col],'|')
Else
data = arrData[row,col]
EndIf
htmlData = htmlData : data
htmlData = htmlData : '</td>'
Next
htmlData = htmlData : '</tr>'
Next
htmlData = htmlData : '</table>'
Return htmlData
#EndFunction
#DefineFunction udfArrayToList(arrData,strDelim)
strData = ''
count = ArrInfo ( arrData, 1 ) -1
For ctr = 0 To count
If ctr < count
strData=StrCat(strData,arrData[ctr],strDelim)
Else
strData=StrCat(strData,arrData[ctr])
EndIf
Next
Return (strData)
#EndFunction
; System Info
computername = ComputerNameGet(0)
username = Environment( 'USERNAME' )
dir = ShortCutDir( 'Personal' ,0 ,1 )
; MODIFY TO FIT YOUR NEEDS
title = 'PC Inventory'
; Email Settings
smtphost = ";mail.dadomain.com"
toaddr = "dauser@dadomain.com"
fromaddr = username : "@dadomain.com"
subject = "Hardware Info for": computername
mymsg="<html><head><title>PC INVENTORY</title></head><body><h1>":subject:"</h1>See attached.</body></html>"
flags="h"
attachment = dir: computername : ".html"
; HTML Output
fh = FileOpen( attachment, "Write")
FileWrite( fh, '<!DOCTYPE html><html><head><title>Hardware Information for computername</title><head><body><h1>':computername:'</h1>' )
heading = 'MotherBoard'
class = 'Win32_BaseBoard'
properties = 'Name,Manufacturer,Product,SerialNumber,Status'
arrData = udfWMIDataArray( class, properties )
FileWrite( fh, '<h2>':heading:'</h2>' )
FileWrite( fh, udfConvertToHTMLTableEx( arrData ) )
heading = 'Battery'
class = 'Win32_Battery'
properties = 'Caption,Name,DesignVoltage,DeviceID,EstimatedChargeRemaining,EstimatedRunTime'
arrData = udfWMIDataArray( class, properties )
FileWrite( fh, '<h2>':heading:'</h2>' )
FileWrite( fh, udfConvertToHTMLTableEx( arrData ) )
heading = 'BIOS'
class = 'Win32_Bios'
properties = 'Manufacturer,Name,BIOSVersion,ListOfLanguages,PrimaryBIOS,ReleaseDate,SMBIOSBIOSVersion,SMBIOSMajorVersion,SMBIOSMinorVersion'
arrData = udfWMIDataArray( class, properties )
FileWrite( fh, '<h2>':heading:'</h2>' )
FileWrite( fh, udfConvertToHTMLTableEx( arrData ) )
heading = 'CDROM Drive'
class = 'Win32_CDROMDrive'
properties = 'Name,Drive,MediaLoaded,MediaType,MfrAssignedRevisionLevel'
arrData = udfWMIDataArray( class, properties )
FileWrite( fh, '<h2>':heading:'</h2>' )
FileWrite( fh, udfConvertToHTMLTableEx( arrData ) )
heading = 'Computer System Product'
class = 'Win32_ComputerSystemProduct'
properties = 'Vendor,Version,Name,IdentifyingNumber,UUID'
arrData = udfWMIDataArray( class, properties )
FileWrite( fh, '<h2>':heading:'</h2>' )
FileWrite( fh, udfConvertToHTMLTableEx( arrData ) )
heading = 'Computer System'
class = 'Win32_ComputerSystem'
properties = 'Name,TotalPhysicalMemory'
arrData = udfWMIDataArray( class, properties )
FileWrite( fh, '<h2>':heading:'</h2>' )
FileWrite( fh, udfConvertToHTMLTableEx( arrData ) )
heading = 'CPU'
class = 'Win32_Processor'
properties = 'Name,Manufacturer,Caption,DeviceID,CurrentClockSpeed,CurrentVoltage,DataWidth,L2CacheSize,L3CacheSize,NumberOfCores,NumberOfLogicalProcessors,Status'
arrData = udfWMIDataArray( class, properties )
FileWrite( fh, '<h2>':heading:'</h2>' )
FileWrite( fh, udfConvertToHTMLTableEx( arrData ) )
heading = 'Disk Drive'
class = 'Win32_DiskDrive'
properties = 'Model,SerialNumber,InterfaceType,Size,Partitions'
arrData = udfWMIDataArray( class, properties )
FileWrite( fh, '<h2>':heading:'</h2>' )
FileWrite( fh, udfConvertToHTMLTableEx( arrData ) )
heading = 'IP Address'
class = 'Win32_NetworkAdapterConfiguration'
properties = 'Description,IPAddress,IPSubnet,DefaultIPGateway,DNSServerSearchOrder,WINSPrimaryServer,DNSDomain,DNSDomainSuffixSearchOrder,DHCPEnabled,DHCPServer,DHCPLeaseObtained,DHCPLeaseExpires'
arrData = udfWMIDataArray( class, properties )
FileWrite( fh, '<h2>':heading:'</h2>' )
FileWrite( fh, udfConvertToHTMLTableEx( arrData ) )
heading = 'Network Adapters'
class = 'Win32_NetworkAdapter'
properties = 'Name,Manufacturer,Description,AdapterType,Speed,MACAddress,NetConnectionID'
arrData = udfWMIDataArray( class, properties )
FileWrite( fh, '<h2>':heading:'</h2>' )
FileWrite( fh, udfConvertToHTMLTableEx( arrData ) )
heading = 'OS'
class = 'Win32_OperatingSystem'
properties = 'Caption,CSDVersion,FreePhysicalMemory'
arrData = udfWMIDataArray( class, properties )
FileWrite( fh, '<h2>':heading:'</h2>' )
FileWrite( fh, udfConvertToHTMLTableEx( arrData ) )
heading = 'Physical Memory'
class = 'Win32_PhysicalMemory'
properties = 'BankLabel,DeviceLocator,Capacity,Manufacturer,PartNumber,SerialNumber,Speed'
arrData = udfWMIDataArray( class, properties )
FileWrite( fh, '<h2>':heading:'</h2>' )
FileWrite( fh, udfConvertToHTMLTableEx( arrData ) )
heading = 'System Enclosure'
class = 'Win32_SystemEnclosure'
properties = 'Tag,AudibleAlarm,ChassisTypes,HeatGeneration,HotSwappable,InstallDate,LockPresent,PoweredOn,PartNumber,SerialNumber'
arrData = udfWMIDataArray( class, properties )
FileWrite( fh, '<h2>':heading:'</h2>' )
FileWrite( fh, udfConvertToHTMLTableEx( arrData ) )
; Finalize HTML
FileWrite( fh, '</body></html>' )
FileClose( fh )
ret = AskYesNo( title, 'Would you like to display the results?' )
If ret
; Display Results
Run( attachment, '' )
EndIf
ret = AskYesNo( title, 'Would you like to EMAIL the results?' )
If ret
; EMAIL Results
AddExtender("WWPST44I.DLL")
kInit(smtphost,fromaddr,"","","")
kDest(toaddr,"","")
;ret = kSendText(subject,mymsg,attachment,"h")
ret = kSendFile(subject,attachment,attachment,flags)
If ret == 0
errline=kStatusInfo()
Message("ErrLine",errline)
EndIf
EndIf
Exit