That one also looks good. I will keep them in mind.
Right now, I try to do this with WMI because I want to create a simple script that can grow.
Code:
If NOT @LOGONMODE
Break On
Else
Break Off
EndIf
Dim $RC
$RC = SetOption("Explicit","On")
$RC = SetOption("NoVarsInStrings","On")
$RC = SetOption("NoMacrosInStrings","On")
$RC = SetOption("WrapAtEOL","On")
Include "C:\Script\UDF\OSPing.UDF"
Dim $objDomain, $objComputer
Dim $arrComputers, $strComputer
Dim $objWMIService, $colItems, $objItem
Dim $i, $What, $From, $Result
Dim $INI
$INI = @SCRIPTDIR + "\Computers.ini"
$objDomain = GetObject("WinNT://DomainName")
$objDomain.Filter = "Computer",""
For Each $objComputer In $objDomain
If NOT $arrComputers = ""
$arrComputers = $arrComputers + ","
EndIf
$arrComputers = $arrComputers + $objComputer.Name
Next
$arrComputers = Split($arrComputers,",")
For Each $strComputer In $arrComputers
If OSPing($strComputer)
$objWMIService = GetObject("winmgmts:\\" + $strComputer + "\root\cimv2")
$From = "Win32_BIOS"
$What = "SerialNumber"
$colItems = $objWMIService.ExecQuery("Select * from " + $From,,48)
$i = 0
For Each $objItem In $colItems
$i = $i + 1
WriteToIni($objItem,$What,$INI,$strComputer,$From,$i)
Next
$From = "Win32_SystemEnclosure"
$What = "SerialNumber"
$colItems = $objWMIService.ExecQuery("Select * from " + $From,,48)
$i = 0
For Each $objItem In $colItems
$i = $i + 1
WriteToIni($objItem,$What,$INI,$strComputer,$From,$i)
Next
$From = "Win32_NetworkAdapter"
$colItems = $objWMIService.ExecQuery("Select * from " + $From,,48)
$i = 0
For Each $objItem In $colItems
If $objItem.NetConnectionStatus <> ""
$i = $i + 1
$What = "Description"
WriteToIni($objItem,$What,$INI,$strComputer,$From,$i)
$What = "MACAddress"
WriteToIni($objItem,$What,$INI,$strComputer,$From,$i)
EndIf
Next
$From = 'Win32_ComputerSystem'
$colItems = $objWMIService.ExecQuery("Select * from " + $From,,48)
$i = 0
For Each $objItem In $colItems
$i = $i + 1
$What = "Manufacturer"
WriteToIni($objItem,$What,$INI,$strComputer,$From,$i)
$What = "Model"
WriteToIni($objItem,$What,$INI,$strComputer,$From,$i)
$What = "TotalPhysicalMemory"
WriteToIni($objItem,$What,$INI,$strComputer,$From,$i)
$What = "Win32_TapeDrive"
WriteToIni($objItem,$What,$INI,$strComputer,$From,$i)
Next
EndIf
Next
Function WriteToIni($objItem,$What,$INI,$strComputer,$From,$i)
Dim $RC, $Result
$RC = Execute('$Result = $objItem.'+$What)
$RC = WriteProfileString($INI,$strComputer,$From+","+$What+","+$i,$Result)
EndFunction