WMI mit PHP

Folgender PHP-Code ermittelt die auf einem Windows-System installierte Software. Dabei kann man auch einen Remote-Computer abfragen. Mit der Funktion getWMI() kann man aber auch alle anderen WMI-Abfragen durchführen. Das Funktioniert natürlich nur unter Windows.

<?php
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);
    }
    
    $objWEBM = $objService->Get($strClass);
    $objProp = $objWEBM->Properties_;
    
    $arrProp = $objProp->Next($objProp->Count);

    $objWEBMCol = $objWEBM->Instances_();
    $arrWEBMCol = $objWEBMCol->Next($objWEBMCol->Count);
    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;
}


echo "<pre>";

print_r(getWMI("Win32_Product", "192.168.0.56", "administrator", "password"));

echo "</pre>";
?>