要約: を使用して WMI を照会するときに使用するポートを指定することは可能ですか?System.Management;
さまざまなサブシステムの警告またはエラーをチェックするために、WBEM を使用して多数の ESXi サーバーのクラスを照会する Linux の下の python スクリプトがあります。以前、個別に、WMI を使用してディスク消費量などを多数の WinTel ボックスに照会する WPF アプリケーションを作成しました。
スクリプトと同じ機能を実行する新しい WPF アプリケーションを作成したいと考えており、WMI でこれを実行できると考えました。以下は、簡潔にするためにエラー処理を削除した私のテスト コードですSetOptions
。これは、ユーザー名とパスワードを提供するプライベート関数です。
foreach (string hostname in Properties.Settings.Default.Hosts)
foreach (string WMIclass in Properties.Settings.Default.Classes)
{
ObjectQuery Query = new ObjectQuery("SELECT * FROM " + WMIclass);
ManagementObjectSearcher mos = GetMos(Query, hostname);
foreach (ManagementObject mo in mos.Get())
foreach (PropertyData pdc in mo.Properties)
Debug.WriteLine(pdc.Name + " \t\t: " + pdc.Value);
}
private ManagementObjectSearcher GetMos(ObjectQuery Query, string Hostname)
{
ConnectionOptions Options = SetOptions();
ManagementScope Scope = new ManagementScope("\\\\" + Hostname + "\\root\\cimv2", Options);
return new ManagementObjectSearcher(Scope, Query);
}
問題は、リモート サーバーで RPC を使用できないことです。これは、ESX サーバーによってホストされていない 135 で最初に RPC 呼び出しを確立しようとしているからだと思います。私の質問は、ポート 5989 を指定する方法、または .net で必要なことを実行するために使用できる簡単なものがあるかどうかです。素朴に、クラス構造はWMI/WBEM間で同じように見えると思っています。確かにそれは可能です:-/