VBScript Windows Computer Inventory
VBScript Windows Computer Inventory
Dim strComputer
Dim i, j
Dim objExcel, objFSO, objWMIService, objOSItem, objBIOS, objSetting
Dim objQuickFix, objPrintItem, objSoftware, objNet, objVideo
Dim objService, objDisk, objDiskDrive, objSCSIItem, objProcItem
Dim colBIOS, colDisks, colDiskDrives, colDrives, colNet, colOSItems
Dim colPrintItems, colProcItems, colVideo
Dim colQuickFixes, colSCSIItems, colServices, colSettings, colSoftware
Dim disk_size, disk_free, video_ram, diskDrive_size, phys_ram
'Get the computer name from user to begin processing
strComputer = InputBox("Computer to Inventory", "Computer Name")
'Initialize counter
i = 0
'Declare Constants
Const xlLeft = -4131
Const xlHorizontal = -4128
'Declare Objects
Set objExcel = CreateObject("Excel.Application")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
'Initialize collections
Set colBIOS = objWMIService.ExecQuery("Select * from Win32_BIOS")
Set colDisks = objWMIService.ExecQuery("Select * from Win32_LogicalDisk")
Set colDiskDrives = objWMIService.ExecQuery("Select * from Win32_DiskDrive")
Set colDrives = objFSO.Drives
Set colNet = objWMIService.ExecQuery("Select * from Win32_NetworkAdapter")
Set colOSItems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem")
Set colPrintItems = objWMIService.ExecQuery("Select * from Win32_Printer")
Set colProcItems = objWMIService.ExecQuery("Select * from Win32_Processor")
Set colQuickFixes = objWMIService.ExecQuery("Select * from
Win32_QuickFixEngineering")
Set colSCSIItems = objWMIService.ExecQuery("Select * from Win32_SCSIController")
Set colServices = objWMIService.ExecQuery("Select * From Win32_Service")
Set colSettings = objWMIService.ExecQuery("Select * from Win32_ComputerSystem")
Set colSoftware = objWMIService.ExecQuery("Select * from Win32_Product")
Set colVideo = objWMIService.ExecQuery("Select * from Win32_VideoController")
'*********************************************************************************
' Create a new and blank spreadsheet
'*********************************************************************************
objExcel.Visible = True
objExcel.Workbooks.Add
'Create Sheet for computer name, os, install date, general information
objExcel.Worksheets("Sheet5").Name = strComputer
'Create Sheet named software
objExcel.Worksheets("Sheet4").Name = "Software"
'Create Sheet named services
objExcel.Worksheets("Sheet1").Name = "Services"
'Create Sheet named hardware - e.g. disk drives, memory, processor
objExcel.Worksheets("Sheet2").Name = "Hardware"
'Create Sheet named printers
objExcel.Worksheets("Sheet3").Name = "Printers"
'*********************************************************************************
'Computer information
'*********************************************************************************
'start the counter for all of the loops
i = 1 'row counter
j = 1 'column counter
i = i + 1
j = j + i
'Get OS information
i = i + 2
j = 1
j = j + 1
i = i + 1
j = j - 1
j = j + 1
i = i + 1
j = j - 1
objExcel.Cells(i, j).Value = "InstallDate:"
objExcel.Cells(i, j).Font.Bold = TRUE
j = j + 1
i = i + 1
j = j - 1
j = j + 1
i = i + 1
j = j - 1
j = j + 1
i = i + 1
j = j - 1
j = j + 1
i = i + 1
j = j - 1
j = j + 1
i = i + 1
j = j - 1
j = j + 1
j = j + 1
i = i + 1
j = j - 1
j = j + 1
i = i + 1
j = j - 1
Next
i = i + 1
'Section header
objExcel.Cells(i, j).Value = "Physical Machine Information"
objExcel.Cells(i, j).Font.Bold = TRUE
i = i + 1
j = j + 1
i = i + 1
j = 1
j = j + 1
i = i + 1
j = 1
j = j + 1
i = i + 1
j = j - 1
j = j + 1
'*********************************************************************************
'Software Information
'*********************************************************************************
'Activate the Software worksheet
objExcel.Worksheets("Software").Activate
i = 1
j = 1
objExcel.Cells(i, j) = "Software"
objExcel.Cells(i, j).Font.Bold = TRUE
i = i + 1
objExcel.Cells(i, j) = "Caption:"
objExcel.Cells(i, j).Font.Bold = TRUE
j = j + 1
objExcel.Cells(i, j) = "Name:"
objExcel.Cells(i, j).Font.Bold = TRUE
j = j + 1
objExcel.Cells(i, j) = "Version:"
objExcel.Cells(i, j).Font.Bold = TRUE
j = j + 1
objExcel.Cells(i, j) = "Description:"
objExcel.Cells(i, j).Font.Bold = TRUE
j = j + 1
objExcel.Cells(i, j) = "Vendor:"
objExcel.Cells(i, j).Font.Bold = TRUE
j = j + 1
j = j + 1
j = j + 1
j = j + 1
i = i + 1
j = 1
j = j + 1
objExcel.Cells(i, j) = objSoftware.Name
j = j + 1
objExcel.Cells(i, j) = objSoftware.Version
j = j + 1
objExcel.Cells(i, j) = objSoftware.Description
j = j + 1
objExcel.Cells(i, j) = objSoftware.Vendor
j = j + 1
objExcel.Cells(i, j) = objSoftware.IdentifyingNumber
j = j + 1
objExcel.Cells(i, j) = objSoftware.InstallDate2
j = j + 1
objExcel.Cells(i, j) = objSoftware.InstallLocation
j = j + 1
objExcel.Cells(i, j) = objSoftware.PackageCache
j = 1
i = i + 1
Next
i = i + 1
j = 1
'Section header
objExcel.Cells(i, j) = "Installed Hotfixes"
objExcel.Cells(i, j).Font.Bold = TRUE
i = i + 1
'Column headers
objExcel.Cells(i, j) = "Hot Fix ID:"
objExcel.Cells(i, j).Font.Bold = TRUE
j = j + 1
objExcel.Cells(i, j) = "Description:"
objExcel.Cells(i, j).Font.Bold = TRUE
j = j + 1
j = j + 1
'Hotfix data
For Each objQuickFix in colQuickFixes
i = i + 1
j = 1
j = j + 1
objExcel.Cells(i, j) = objQuickFix.Description
j = j + 1
objExcel.Cells(i, j) = objQuickFix.InstalledBy
j = j + 1
objExcel.Cells(i, j) = objQuickFix.ServicePackInEffect
Next
'*********************************************************************************
'Services Information
'*********************************************************************************
'Activate the services worksheet
objExcel.Worksheets("Services").Activate
i = 1
j = 1
'Column headers
objExcel.Cells(i, j).Value = "Service"
objExcel.Cells(i, j).Font.Bold = TRUE
j = j + 1
j = j + 1
j = j + 1
j = j + 1
'Services data
For Each objService in colServices
i = i + 1
j = 1
objExcel.Cells(i, j) = objService.Name
j = j + 1
objExcel.Cells(i, j) = objService.State
j = j + 1
objExcel.Cells(i, j) = objService.StartMode
j = j + 1
objExcel.Cells(i, j) = objService.StartName
j = j + 1
objExcel.Cells(i, j) = objService.PathName
Next
' Autofit the first column to fit the longest service name
objExcel.Columns("A:Z").EntireColumn.AutoFit
objExcel.Columns("A:Z").HorizontalAlignment = xlLeft
'*********************************************************************************
'Hardware Section
'*********************************************************************************
'Activate the hardware worksheet
objExcel.Worksheets("Hardware").Activate
i = 1
j = 1
'Section header
objExcel.Cells(i, j) = "Logical Drives"
objExcel.Cells(i, j).Font.Bold = TRUE
i = i + 1
j = 1
'Column headers
objExcel.Cells(i, j) = "Drive letters:"
objExcel.Cells(i, j).Font.Bold = TRUE
j = j + 1
j = j + 1
objExcel.Cells(i, j) = "Description:"
objExcel.Cells(i, j).Font.Bold = TRUE
j = j + 1
j = j + 1
j = j + 1
j = j + 1
objExcel.Cells(i, j) = "Volume Serial Number:"
objExcel.Cells(i, j).Font.Bold = TRUE
j = j + 1
objExcel.Cells(i, j) = "Compressed:"
objExcel.Cells(i, j).Font.Bold = TRUE
i = i + 1
j = 1
j = j + 1
objExcel.Cells(i, j) = objDisk.VolumeName
j = j + 1
objExcel.Cells(i, j) = objDisk.Description
j = j + 1
objExcel.Cells(i, j) = objDisk.FileSystem
j = j + 1
j = j + 1
j = j + 1
objExcel.Cells(i, j) = objDisk.VolumeSerialNumber
j = j + 1
objExcel.Cells(i, j) = objDisk.Compressed
j = 1
i = i + 1
Next
j = 1
i = i + 1
'Section header
objExcel.Cells(i, j) = "Physical Drives"
objExcel.Cells(i, j).Font.Bold = TRUE
i = i + 1
j = 1
'Column headers
objExcel.Cells(i, j) = "Caption:"
objExcel.Cells(i, j).Font.Bold = TRUE
j = j + 1
j = j + 1
objExcel.Cells(i, j) = "Index:"
objExcel.Cells(i, j).Font.Bold = TRUE
j = j + 1
j = j + 1
objExcel.Cells(i, j) = "Manufacturer:"
objExcel.Cells(i, j).Font.Bold = TRUE
j = j + 1
j = j + 1
j = j + 1
objExcel.Cells(i, j) = "Model:"
objExcel.Cells(i, j).Font.Bold = TRUE
j = j + 1
objExcel.Cells(i, j) = "Partitions:"
objExcel.Cells(i, j).Font.Bold = TRUE
j = j + 1
j = j + 1
j = j + 1
j = j + 1
j = j + 1
objExcel.Cells(i, j) = "Signature:"
objExcel.Cells(i, j).Font.Bold = TRUE
j = j + 1
j = j + 1
objExcel.Cells(i, j) = "Status:"
objExcel.Cells(i, j).Font.Bold = TRUE
i = i + 1
j = 1
objExcel.Cells(i, j) = objDiskDrive.Caption
j = j + 1
objExcel.Cells(i, j) = objDiskDrive.DeviceID
j = j + 1
objExcel.Cells(i, j) = objDiskDrive.Index
j = j + 1
objExcel.Cells(i, j) = objDiskDrive.InterfaceType
j = j + 1
objExcel.Cells(i, j) = objDiskDrive.Manufacturer
j = j + 1
objExcel.Cells(i, j) = objDiskDrive.MediaLoaded
j = j + 1
objExcel.Cells(i, j) = objDiskDrive.MediaType
j = j + 1
objExcel.Cells(i, j) = objDiskDrive.Model
j = j + 1
objExcel.Cells(i, j) = objDiskDrive.Partitions
j = j + 1
objExcel.Cells(i, j) = objDiskDrive.SCSIBus
j = j + 1
objExcel.Cells(i, j) = objDiskDrive.SCSILogicalUnit
j = j + 1
objExcel.Cells(i, j) = objDiskDrive.SCSIPort
j = j + 1
objExcel.Cells(i, j) = objDiskDrive.SCSITargetId
j = j + 1
objExcel.Cells(i, j) = objDiskDrive.SectorsPerTrack
j = j + 1
objExcel.Cells(i, j) = objDiskDrive.Signature
j = j + 1
j = j + 1
objExcel.Cells(i, j) = objDiskDrive.Status
Next
j = 1
i = i + 2
'Section header
objExcel.Cells(i, j) = "SCSI Information"
objExcel.Cells(i, j).Font.Bold = TRUE
i = i + 1
j = 1
'Column headers
objExcel.Cells(i, j) = "Name:"
objExcel.Cells(i, j).Font.Bold = TRUE
j = j + 1
j = j + 1
j = j + 1
j = j + 1
j = j + 1
j = j + 1
j = j + 1
objExcel.Cells(i, j) = objSCSIItem.Name
j = j + 1
objExcel.Cells(i, j) = objSCSIItem.DeviceID
j = j + 1
objExcel.Cells(i, j) = objSCSIItem.DriverName
j = j + 1
objExcel.Cells(i, j) = objSCSIItem.PNPDeviceID
j = j + 1
objExcel.Cells(i, j) = objSCSIItem.ProtocolSupported
j = j + 1
objExcel.Cells(i, j) = objSCSIItem.StatusInfo
j = j + 1
objExcel.Cells(i, j) = objSCSIItem.ConfigManagerErrorCode
j = j + 1
objExcel.Cells(i, j) = objSCSIItem.ConfigManagerUserConfig
Next
j = 1
i = i + 2
'Section header
objExcel.Cells(i, j) = "BIOS Information"
objExcel.Cells(i, j).Font.Bold = TRUE
i = i + 1
j = 1
'Column header
objExcel.Cells(i, j) = "Manufacturer:"
objExcel.Cells(i, j).Font.Bold = TRUE
j = j + 1
objExcel.Cells(i, j) = "Name:"
objExcel.Cells(i, j).Font.Bold = TRUE
j = j + 1
j = j + 1
objExcel.Cells(i, j) = "Version:"
objExcel.Cells(i, j).Font.Bold = TRUE
'BIOS data
For each objBIOS in colBIOS
i = i + 1
j = 1
objExcel.Cells(i, j) = objBIOS.Manufacturer
j = j + 1
objExcel.Cells(i, j) = objBIOS.Name
j = j + 1
objExcel.Cells(i, j) = objBIOS.ReleaseDate
j = j + 1
objExcel.Cells(i, j) = objBIOS.Version
Next
j = 1
i = i + 2
'Section header
objExcel.Cells(i, j) = "Processor Information"
objExcel.Cells(i, j).Font.Bold = TRUE
i = i + 1
j = 1
'Column headers
objExcel.Cells(i, j) = "Name:"
objExcel.Cells(i, j).Font.Bold = TRUE
j = j + 1
objExcel.Cells(i, j) = "Manufacturer:"
objExcel.Cells(i, j).Font.Bold = TRUE
j = j + 1
j = j + 1
j = j + 1
objExcel.Cells(i, j) = "Architecture:"
objExcel.Cells(i, j).Font.Bold = TRUE
j = j + 1
'Processor data
For Each objProcItem in colProcItems
i = i + 1
j = 1
objExcel.Cells(i, j) = objProcItem.Name
j = j + 1
objExcel.Cells(i, j) = objProcItem.Manufacturer
j = j + 1
objExcel.Cells(i, j) = objProcItem.CurrentClockSpeed
j = j + 1
objExcel.Cells(i, j) = objProcItem.L2CacheSize
j = j + 1
objExcel.Cells(i, j) = objProcItem.Architecture
j = j + 1
objExcel.Cells(i, j) = objProcItem.AddressWidth
Next
j = 1
i = i + 2
'Section header
objExcel.Cells(i, j) = "Physical Memory Information"
objExcel.Cells(i, j).Font.Bold = TRUE
i = i + 1
j = 1
'Column header
objExcel.Cells(i, j) = "Total Physical Memory (MB):"
objExcel.Cells(i, j).Font.Bold = TRUE
j = 1
i = i + 2
'Section header
objExcel.Cells(i, j) = "Video Card Information"
objExcel.Cells(i, j).Font.Bold = TRUE
i = i + 1
j = 1
'Column header
objExcel.Cells(i, j) = "Name:"
objExcel.Cells(i, j).Font.Bold = TRUE
j = j + 1
objExcel.Cells(i, j) = "Description:"
objExcel.Cells(i, j).Font.Bold = TRUE
j = j + 1
j = j + 1
objExcel.Cells(i, j) = objVideo.Caption
j = j + 1
objExcel.Cells(i, j) = objVideo.Description
j = j + 1
objExcel.Cells(i, j) = objVideo.DriverVersion
j = j + 1
Next
'Section header
objExcel.Cells(i, j) = "NIC Information"
objExcel.Cells(i, j).Font.Bold = TRUE
'Column header
i = i + 1
j = 1
objExcel.Cells(i, j) = "Name:"
objExcel.Cells(i, j).Font.Bold = TRUE
j = j + 1
j = j + 1
objExcel.Cells(i, j) = "Manufacturer:"
objExcel.Cells(i, j).Font.Bold = TRUE
objExcel.Cells(i, j) = objNet.Name
j = j + 1
objExcel.Cells(i, j) = objNet.MACAddress
j = j + 1
objExcel.Cells(i, j) = objNet.Manufacturer
End if
Next
'*********************************************************************************
'Printers Section
'*********************************************************************************
'Activate printers worksheet
objExcel.Worksheets("Printers").Activate
i = 1
j = 1
'Section header
objExcel.Cells(i, j) = "Printer Information"
objExcel.Cells(i, j).Font.Bold = TRUE
'Column Headers
i = i + 1
j = 1
objExcel.Cells(i, j) = "Default:"
objExcel.Cells(i, j).Font.Bold = TRUE
j = j + 1
objExcel.Cells(i, j) = "Name:"
objExcel.Cells(i, j).Font.Bold = TRUE
j = j + 1
j = j + 1
j = j + 1
j = j + 1
objExcel.Cells(i, j) = objPrintItem.Default
j = j + 1
objExcel.Cells(i, j) = objPrintItem.Name
j = j + 1
objExcel.Cells(i, j) = objPrintItem.ServerName
j = j + 1
objExcel.Cells(i, j) = objPrintItem.ShareName
j = j + 1
objExcel.Cells(i, j) = objPrintItem.DriverName
j = j + 1
objExcel.Cells(i, j) = objPrintItem.PortName
Next
'*********************************************************************************
'Cleanup
'*********************************************************************************
'Cleanup objects
objExcel.Quit
'Initialize collections
Set colBIOS = nothing
Set colDisks = nothing
Set colDiskDrives = nothing
Set colDrives = nothing
Set colNet = nothing
Set colOSItems = nothing
Set colPrintItems = nothing
Set colProcItems = nothing
Set colQuickFixes = nothing
Set colSCSIItems = nothing
Set colServices = nothing
Set colSettings = nothing
Set colSoftware = nothing
Set colVideo = nothing
Wscript.Quit 0