2

私は何百ものサーバーで作業しているため、仕事のために小さな WMI 情報グラバーに取り組んでおり、特定の情報を取得できることは、5 つ以上のサーバーで情報を取得する必要がある場合に非常に役立ちます。

List<string> output = new List<string>();
ObjectQuery query = new ObjectQuery("SELECT * FROM ComputerSystem");

ManagementObjectSearcher objectSearcher = new ManagementObjectSearcher(ServerConnect.HardwareScope, query);
ManagementObjectCollection retObject = objectSearcher.Get();

foreach (ManagementObject manObj in retObject)
{
    string[] data = ((string)manObj["Description"]).Split('-');
    string IPMI = data[1].Substring(7);
    string firmware = data[2].Substring(5);

    output.Add("IPMI Version: " + IPMI);
    output.Add("BMC Firmware Version: " + firmware);
}

return output;

これは現在、ComputerSystem からいくつかの基本データを取得するために使用しているものです。これは一部のサーバーでは機能しますが、他のサーバーではクラッシュし、必要な正しい情報を取得します。ただし、COMException でクラッシュしないようにする必要があります。

次のコード行で System.Runtime.InteropServices.COMException が発生すると述べています。

foreach (ManagementObject manObj in retObject)

一部のサーバーが情報を取得するのではなく、この例外を返す理由と、それを修正できるかどうかについて、この問題を解決しようとしています。

私は過去数週間、これを修正しようとしてきましたが、最終的に私が抱えているこの特定の問題について助けを求めることにしました.

アップデート

サーバーに対して同じ名前空間と選択を実行したところ、WMI Code Creator ( http://www.microsoft.com/en-us/download/confirmation.aspx?id=8572 ) で問題が発生し、取得できました。必要なデータですが、プログラムを実行するとCOMExceptionが発生します。Code Creator が作成するコードと自分のコードを調べて、その一部を変更しましたが、それでもエラーが発生します。

4

0 に答える 0