2011-05-25 16 views
0

摘要:是有可能指定端口使用System.Management;使用System.Management來查詢的VMware Server

查詢WMI時使用我在Linux下一個python腳本,查詢,使用WBEM,類多項ESXi服務器來檢查各種子系統上的警告或錯誤。在此之前,我分別編寫了一個WPF應用程序,它使用WMI查詢許多WinTel盒子的磁盤消耗等。

我想編寫一個新的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。我認爲這是因爲我第一次嘗試在135上建立RPC調用,而不是由ESX服務器託管。我的問題是如何指定5989端口,或者有什麼簡單的方法可以在.net中使用,以執行我需要做的事情。天真地說,我認爲WMI/WBEM之間的班級結構看起來是一樣的: -/

回答

0

由於上述.net中的WMI類不支持WBEM。最後,我最終圍繞VMware.Vim.dll編寫了一些代碼,其中有一些關於我需要做什麼的很好的文檔。

0

System.Management只能用於連接到運行WMI的其他Windows機器,並且不支持WBEM。我看到的唯一的C#WBEM客戶端庫是http://code.google.com/p/wbemtools/,但它看起來不太成熟。