Hi zusammen,
ich frage in meinem Script diverse Informationen (z.B. Hardware, BIOS, ...) über WMI ab:
[autoit]
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_BaseBoard", "WQL", $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
If IsObj($colItems) Then
For $objItem In $colItems
$lResult = "MB" & "Manufacturer" & "|" & $objItem.Manufacturer
_Array2DAdd($lArray, $lResult)
$lResult = "MB" & "Name" & "|" & $objItem.Name
_Array2DAdd($lArray, $lResult)
$lResult = "MB" & "Version" & "|" & $objItem.Version
_Array2DAdd($lArray, $lResult)
$lResult = "MB" & "Serialnumber" & "|" & $objItem.SerialNumber
_Array2DAdd($lArray, $lResult)
Next
_WriteDebug('INFO;_EnumerateHardwareWmi;"Win32_BaseBoard" read successfully')
Else
_WriteDebug('ERR ;_EnumerateHardwareWmi;No WMI Objects Found for class: "Win32_BaseBoard"')
SetError(1)
EndIf
Dies funktioniert soweit auch ohne Probleme. Wenn z.B. $objItem.Version über WMI nicht gefunden werden kann, fange ich dies über einen eigenen Error Handler ab. Dies würde ich nach Möglichkeit gerne vermeiden.
Gibt es die Möglichkeit, vor dem Aufruf von z.B.
$lResult = "MB" & "Manufacturer" & "|" & $objItem.Manufacturer
_Array2DAdd($lArray, $lResult)
zu überprüfen, ob $objItem.Manufacturer vorhanden ist und falls nicht zu überspringen?
Danke und Gruß
phr3n1c