Hallo,
derzeit versuche ich über PHP WMI-Daten auszulesen. Dafür habe ich eine Funktion gefunden. Die ist aber scheinbar veraltet:
PHP-Code:
$arrProp = $objProp->Next($objProp->Count);
Das geht wohl seit PHP5 nicht mehr. Ich solle es doch durch foreach() ersetzen. Das habe ich jetzt auch gemacht, doch leider bekomme ich jetzt einen Fehler dieser Art:
PHP-Code:
Object of type variant did not create an Iterator
So sieht der besagte Teil der Funktion jetzt aus (schon bearbeitet, mit Kommentaren versehen):
PHP-Code:
function getWMI($strClass,$strHostname, $strUser, $strPassword)
{
$objLocator = new COM("WbemScripting.SWbemLocator");
if($strHostname == "")
{
$objService = $objLocator->ConnectServer();
}
else
{
$objService = $objLocator->ConnectServer($strHostname, "rootcimv2", "$strHostname\\$strUser", $strPassword);
}
// ------------------------Ab hier gehts los
$objWEBM = $objService->Get($strClass);
$objProp = $objWEBM->Properties_;
//$arrProp = $objProp->Next($objProp->Count); // So sah das früher aus, scheinbar nur für php 4
foreach($objProp AS $arrProp) // foreach von mir eingefügt
{
$objWEBMCol = $objWEBM->Instances_();
//$arrWEBMCol = $objWEBMCol->Next($objWEBMCol->Count); // So sah das früher aus, scheinbar nur für php 4
foreach($objWEBMCol AS $arrWEBMCol) // foreach von mir eingefügt
{
foreach($arrWEBMCol as $objItem)
{
reset($arrProp);
$arrInstance = array();
foreach($arrProp as $propItem)
{
eval("\$value = \$objItem->" .$propItem->Name .";");
$arrInstance[$propItem->Name] = trim($value);
}
$arrData[] = $arrInstance;
}
}
}
return $arrData;
}
Doch jetzt sind meine Kenntnisse über Objekte leider schon am Ende. Ich weiß nicht was das für ein Fehler ist und wie man ihn behebt. Könnt ihr mir vielleicht helfen? Vielen Dank schonmal
