2009-06-16 88 views
7

我們有一個使用WMI的.NET項目,並且有興趣將它移植到Mono框架中。Mono .NET框架和WMI

看來Mono不支持WMI。

是否有任何庫可以添加WMI支持?

基本上我們想要從Linux/OS X框中使用WMI訪問Windows服務器。

回答

5

Windows Management Instrumentation是WBEM的Microsoft實現(Web-Based Enterprise Management)。

有些開源實現(例如openPegasus)可能可以使用客戶端,但不知道MS對他們的版本做了什麼。如果您可以將CIM查詢發送到服務器,那麼您可能會收到良好的結果。

請注意,Windows不會通過http執行WMI,只能使用DCOM/DCE-RPC,因此某些客戶端將無法正常工作。快速谷歌..和OpenPegasus將允許您訪問Windows使用WMI Mapper。如果沒有,您可以隨時在Windows上運行服務器組件。

5

關於WMI over HTTP,請看看WinRM,這似乎是XP,Win2003,Win2008和Vista的WS-Management的實現。這定義了一種通過HTTP(S)(SOAP)訪問Common Information Model(CIM)信息的方法。 CIM由DMTF定義,WMI是微軟實施的CIM。

如果我正確地閱讀了字母表湯,您應該可以使用Linux中的SOAP訪問Windows機器上的WinRM(WS-Management),從而提供對WMI的訪問(只要WinRM已安裝,正在運行以及沒有防火牆)。

IT /安全是否允許在企業網絡上運行這樣的事情是另一件有意義的事情:任何開放端口都可能具有安全風險,並且允許通過設計進行命令,控制和配置的開放端口可能是相當大的漏洞。證書,IPSec和範圍的防火牆規則是你的朋友!

請注意,我沒有使用WS-Management的直接經驗,也沒有WinRM,所以YMMV

1

我知道你可以在Linux上安裝wmi-client(sudo apt-get install wmi-client)。您應該能夠使用此命令從Linux命令行查詢Windows盒子上的任何wmi對象。