質問
WMIを使用する.NETプロジェクトがあり、Monoフレームワークへの移植に関心があります。
MonoはWMIをサポートしていないようです。
WMIサポートを追加できるライブラリはありますか?
基本的に、Linux / OS XボックスからWMIを使用してWindowsサーバーにアクセスします。
解決
Windows Management Instrumentationは、MicrosoftによるWBEMの実装です( Webベースのエンタープライズ管理) 。
クライアントを使用できる可能性のあるオープンソースの実装(例: openPegasus )がありますが、 MSがそのバージョンで何をしたかはわかりません。 CIMクエリをサーバーに送信できる場合、良好な結果が得られる可能性があります。
Windowsはhttp経由でWMIを実行せず、DCOM / DCE-RPCのみを実行するため、一部のクライアントは動作しません。簡単なgoogle ..とOpenPegasusを使用すると、 WMI Mapperを使用してWindowsにアクセスできます。 。そうでない場合は、常にWindowsでサーバーコンポーネントを実行できます。
他のヒント
WMI over HTTPについては、 WinRM は、XP、Win2003用の WS-Management の実装のようです。 Win2008、およびVista。これは、HTTP(S)を介して Common Information Model (CIM)情報にアクセスする方法を定義します。 (石鹸)。 CIMは DMTF によって定義され、WMIはMicrosoftによるCIMの実装です。
アルファベットのスープを正しく読めば、LinuxからSOAPを使用してWindowsマシンのWinRM(WS-Management)にアクセスできるようになり、WMIにアクセスできるようになります(WinRMがインストールされ、実行されていて、ファイアウォール)。
企業ネットワーク上でこのようなことを実行することがIT /セキュリティによって許可されるかどうかはまったく別の問題です:開いているポートはセキュリティリスクになる可能性があり、設計、コマンド、制御、および構成を許可するポートはかなりの穴になる可能性があります。証明書、IPSec、およびスコープ付きファイアウォールルールはあなたの友達です!
WS-ManagementやWinRMを直接使用した経験がないため、 YMMV 。
Linuxにwmi-clientをインストールできることは知っています(sudo apt-get install wmi-client)。これを使用して、LinuxコマンドラインからWindowsボックス上のwmiオブジェクトを照会できるはずです。