Hardware inventory collection

Could someone help me to add option to this vbs script. What I like to have added is harddrive size, videocard type. The script was made by BobSampson.

http://www.experts-exchange.com/Programming/Languages/.NET/Visual_Basic.NET/Q_22585270.html?sfQueryTermInfo=1+hardwar+script+wmi
QC20NAsked:
Who is Participating?

[Webinar] Streamline your web hosting managementRegister Today

x
 
RobSampsonConnect With a Mentor Commented:
Thanks for that.  Try this.

Regards,

Rob.
Option Explicit
 
'On Error Resume Next
Dim objFSO, wshNetwork, strComputer, objWMIService, colItems, strSerialNumber, strFileName, strResults, objItem, objOutputFile, strCPUDetails
 
Set objFSO = CreateObject("Scripting.FileSystemObject")
 
' To convert to a logon script that runs without user interaction, add a rem in front of the strComputer = InputBox
' line below and remove the rem from the strComputer = "." line below that. This will then only check the PC on which
' the script runs
Set WshNetwork = WScript.CreateObject("WScript.Network")
strComputer = "."
 
' Get the serial number first to see if it already exists in the spreadsheet
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_BIOS",,48)
For Each objItem In colItems
      strSerialNumber = "" & Trim(objItem.SerialNumber)
Next
Set objWMIService = Nothing
Set colItems = Nothing
 
strFileName = "\\server\share\Hardware Inventory\" & strSerialNumber & ".txt"
 
' Create Excel Spreadsheet
strResults = "Computername;Username;Manufacturer;Model;Serial Number;CPU;CPU Speed;Operating System;Service Pack;Total Memory;Hard Drive Size;Video Controller;Audit Date" & VbCrLf
 
' Get Computer System Details
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_ComputerSystem",,48)
For Each objItem In colItems
      strResults = strResults & Trim(objItem.Caption)  & ";" & Trim(objItem.UserName) & ";" & Trim(objItem.Manufacturer) & ";" & Trim(objItem.Model)
Next
Set objWMIService = Nothing
Set colItems = Nothing
'
'Output the Serial Number
strResults = strResults & ";" & strSerialNumber
 
'
' Get CPU Details
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Processor",,48)
For Each objItem In colItems
      strCPUDetails = Trim(objItem.Name) & ";" & Trim(objItem.CurrentClockSpeed)
Next
Set objWMIService = Nothing
Set colItems = Nothing
strResults = strResults & ";" & strCPUDetails
'
' Get OS Details
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem",,48)
For Each objItem In colItems
    strResults = strResults & ";" & Trim(objItem.Caption) & ";" & Trim(objItem.CSDVersion) & ";" & Trim(FormatNumber(objItem.TotalVisibleMemorySize/1024,0))
Next
Set objWMIService = Nothing
Set colItems = Nothing
'
' Get Hard Drive Size
Dim strDiskSizes
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
    ("Select * from Win32_LogicalDisk Where DriveType = 3")
strDiskSizes = ""
For Each objItem In colItems
	If strDiskSizes = "" Then
    	strDiskSizes = Trim(objItem.Name) & Trim(Round(objItem.Size / 1024 / 1024 / 1024, 2) & "GB")
    Else
    	strDiskSizes = strDiskSizes & vbCr & Trim(objItem.Name) & Trim(Round(objItem.Size / 1024 / 1024 / 1024, 2) & "GB")
    End If
Next
strResults = strResults & ";" & Trim(strDiskSizes)
'
' Get Video Card Type
Dim strVideoController
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery("SELECT Name FROM Win32_VideoController WHERE PNPDeviceID LIKE 'PCI\\VEN%'")
 
strVideoController = ""
For Each objItem In colItems
	strVideoController = Trim(objItem.Name)
Next
strResults = strResults & ";" & strVideoController
'
' Get & Writeout current Date
strResults = strResults & ";" & Trim(Day(Now) & "-" & Month(Now) & "-" & Year(Now))
 
Set objOutputFile = objFSO.CreateTextFile(strFileName, True)
objOutputFile.Write strResults
objOutputFile.Close
 
Set objOutputFile = Nothing
Set objFSO = Nothing
 
MsgBox "Done"

Open in new window

0
 
RobSampsonCommented:
Hi, this should do it.

Regards,

Rob.
Option Explicit
 
'On Error Resume Next
Dim objFSO, wshNetwork, strComputer, objWMIService, colItems, strSerialNumber, strFileName, strResults, objItem, objOutputFile, strCPUDetails
 
Set objFSO = CreateObject("Scripting.FileSystemObject")
 
' To convert to a logon script that runs without user interaction, add a rem in front of the strComputer = InputBox
' line below and remove the rem from the strComputer = "." line below that. This will then only check the PC on which
' the script runs
Set WshNetwork = WScript.CreateObject("WScript.Network")
strComputer = "."
 
' Get the serial number first to see if it already exists in the spreadsheet
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_BIOS",,48)
For Each objItem In colItems
      strSerialNumber = "" & Trim(objItem.SerialNumber)
Next
Set objWMIService = Nothing
Set colItems = Nothing
 
strFileName = "\\server\share\Hardware Inventory\" & strSerialNumber & ".txt"
 
' Create Excel Spreadsheet
strResults = "Computername;Username;Manufacturer;Model;Serial Number;CPU;CPU Speed;Operating System;Service Pack;Total Memory;Hard Drive Size;Video Controller;Audit Date" & VbCrLf
 
' Get Computer System Details
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_ComputerSystem",,48)
For Each objItem In colItems
      strResults = strResults & Trim(objItem.Caption)  & ";" & Trim(objItem.UserName) & ";" & Trim(objItem.Manufacturer) & ";" & Trim(objItem.Model)
Next
Set objWMIService = Nothing
Set colItems = Nothing
'
'Output the Serial Number
strResults = strResults & ";" & strSerialNumber
 
'
' Get CPU Details
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Processor",,48)
For Each objItem In colItems
      strCPUDetails = Trim(objItem.Name) & ";" & Trim(objItem.CurrentClockSpeed)
Next
Set objWMIService = Nothing
Set colItems = Nothing
strResults = strResults & ";" & strCPUDetails
'
' Get OS Details
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem",,48)
For Each objItem In colItems
    strResults = strResults & ";" & Trim(objItem.Caption) & ";" & Trim(objItem.CSDVersion) & ";" & Trim(FormatNumber(objItem.TotalVisibleMemorySize/1024,0))
Next
Set objWMIService = Nothing
Set colItems = Nothing
'
' Get Hard Drive Size
Dim strDiskSizes
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
    ("Select * from Win32_LogicalDisk Where DriveType = 3")
strDiskSizes = ""
For Each objItem In colItems
	If strDiskSizes = "" Then
    	strDiskSizes = Trim(objItem.Name) & Trim(Round(objItem.Size / 1024 / 1024 / 1024, 2) & "GB")
    Else
    	strDiskSizes = strDiskSizes & vbCr & Trim(objItem.Name) & Trim(Round(objItem.Size / 1024 / 1024 / 1024, 2) & "GB")
    End If
Next
strResults = strResults & ";" & Trim(strDiskSizes)
'
' Get Video Card Type
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery("SELECT Name FROM Win32_VideoController WHERE DeviceID='VideoController1'")
 
For Each objItem In colItems
	strResults = strResults & ";" & Trim(objItem.Name)
Next
'
' Get & Writeout current Date
strResults = strResults & ";" & Trim(Day(Now) & "-" & Month(Now) & "-" & Year(Now))
 
Set objOutputFile = objFSO.CreateTextFile(strFileName, True)
objOutputFile.Write strResults
objOutputFile.Close
 
Set objOutputFile = Nothing
Set objFSO = Nothing
 
MsgBox "Done"

Open in new window

0
 
QC20NAuthor Commented:
I can see in the txtfile that it collects:
Video Controller:
ConfigMgr Remote Control Driver

and not the name of the videocard.

And I would also, ask if the Combine hardware script in the same link can be used with this you are doing now?
0
Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

 
RobSampsonCommented:
Hi, so that I can determine how to read your Video Card name, please run the following code and let me know the results.

Regards,

Rob.
If LCase(Right(Wscript.FullName, 11)) = "wscript.exe" Then
    strPath = Wscript.ScriptFullName
    strCommand = "%comspec% /c cscript  """ & strPath & """"
    Set objShell = CreateObject("Wscript.Shell")
    objShell.Run(strCommand), 1, True
    Wscript.Quit
End If
 
Const wbemFlagReturnImmediately = &h10
Const wbemFlagForwardOnly = &h20
 
strComputer = "."
 
   Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
   Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_VideoController", "WQL", _
                                          wbemFlagReturnImmediately + wbemFlagForwardOnly)
 
   For Each objItem In colItems
      WScript.Echo "Caption: " & objItem.Caption
      WScript.Echo "Description: " & objItem.Description
      WScript.Echo "DeviceID: " & objItem.DeviceID
      WScript.Echo "DriverVersion: " & objItem.DriverVersion
      WScript.Echo "InfFilename: " & objItem.InfFilename
      WScript.Echo "InstalledDisplayDrivers: " & objItem.InstalledDisplayDrivers
      WScript.Echo "Name: " & objItem.Name
      WScript.Echo "PNPDeviceID: " & objItem.PNPDeviceID
      WScript.Echo "SystemName: " & objItem.SystemName
      WScript.Echo "VideoArchitecture: " & objItem.VideoArchitecture
      WScript.Echo "VideoMemoryType: " & objItem.VideoMemoryType
      WScript.Echo "VideoMode: " & objItem.VideoMode
      WScript.Echo
   Next

Open in new window

0
 
RobSampsonCommented:
And yes, the "combine" of the text files script can be used as well.

Regards,

Rob.
0
 
QC20NAuthor Commented:
Sorry to say. If I run the code a dos prompt shows and disappear again. Can't see the result.
0
 
RobSampsonCommented:
Sorry....see this bit
%comspec% /c

change that to
%comspec% /k

and then run it again....

Rob.
0
 
QC20NAuthor Commented:
This is the result:

Caption: ConfigMgr Remote Control Driver
Description: ConfigMgr Remote Control Driver
DeviceID: VideoController1
DriverVersion: 4.00.6163.1000
InfFilename: oem23.inf
InstalledDisplayDrivers: ialmrnt5.dll
Name: ConfigMgr Remote Control Driver
PNPDeviceID: ROOT\*CM_RCDISPLAY\0000
SystemName: DKSODT0470
VideoArchitecture: 5
VideoMemoryType: 2
VideoMode:

Caption: Intel(R) 82945G Express Chipset Family
Description: Intel(R) 82945G Express Chipset Family
DeviceID: VideoController2
DriverVersion: 6.14.10.4543
InfFilename: oem6.inf
InstalledDisplayDrivers: ialmrnt5.dll
Name: Intel(R) 82945G Express Chipset Family
PNPDeviceID: PCI\VEN_8086&DEV_2772&SUBSYS_01AD1028&REV_02\3&172E68DD&0&10
SystemName: DKSODT0470
VideoArchitecture: 5
VideoMemoryType: 2
VideoMode:

Caption: Intel(R) 82945G Express Chipset Family
Description: Intel(R) 82945G Express Chipset Family
DeviceID: VideoController3
DriverVersion: 6.14.10.4543
InfFilename: oem6.inf
InstalledDisplayDrivers:
Name: Intel(R) 82945G Express Chipset Family
PNPDeviceID: PCI\VEN_8086&DEV_2776&SUBSYS_01AD1028&REV_02\3&172E68DD&0&11
SystemName: DKSODT0470
VideoArchitecture: 5
VideoMemoryType: 2
VideoMode:
0
All Courses

From novice to tech pro — start learning today.