Link to home
Start Free TrialLog in
Avatar of QC20N
QC20NFlag for Denmark

asked on

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.

https://www.experts-exchange.com/questions/22585270/WMI-hardware-inventory.html?sfQueryTermInfo=1+hardwar+script+wmi
Avatar of RobSampson
RobSampson
Flag of Australia image

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

Avatar of QC20N

ASKER

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

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

Regards,

Rob.
Avatar of QC20N

ASKER

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

change that to
%comspec% /k

and then run it again....

Rob.
Avatar of QC20N

ASKER

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:
ASKER CERTIFIED SOLUTION
Avatar of RobSampson
RobSampson
Flag of Australia image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial