Domanda
Abbiamo un progetto .NET che utilizza WMI e siamo interessati a portarlo nel framework Mono.
Sembra che Mono non supporti WMI.
Esistono librerie che possono aggiungere il supporto WMI?
Fondamentalmente vorremmo accedere a un server Windows usando WMI da un box Linux / OS X.
Soluzione
Strumentazione gestione Windows è un'implementazione Microsoft di WBEM ( Gestione aziendale basata sul web ) .
Esistono implementazioni open source (ad esempio openPegasus ) che potresti essere in grado di utilizzare un client, ma non si può dire cosa ha fatto MS con la sua versione. Se è possibile inviare query CIM al server, è possibile ottenere buoni risultati.
Nota che Windows non esegue WMI su http, ma solo DCOM / DCE-RPC, quindi alcuni client semplicemente non funzioneranno. Un rapido google .. e OpenPegasus ti permetteranno di accedere a Windows usando un WMI Mapper . In caso contrario, puoi sempre eseguire il componente server su Windows.
Altri suggerimenti
Per quanto riguarda WMI su HTTP, dai un'occhiata a WinRM , che sembra essere un'implementazione di WS-Management per XP, Win2003, Win2008 e Vista. Questo definisce un modo per accedere alle Common Information Model (CIM) su HTTP (S) (SAPONE). Il CIM è definito dal DMTF e WMI è l'implementazione Microsoft del CIM.
Se leggo correttamente l'alfabeto alfabetico, dovresti essere in grado di utilizzare SOAP da Linux per accedere a WinRM (WS-Management) su un computer Windows, fornendo così accesso a WMI (purché WinRM sia installato, in esecuzione e non firewalled).
Se IT / Security possa autorizzare l'esecuzione di una cosa del genere su una rete aziendale è un'altra cosa: qualsiasi porta aperta può costituire un rischio per la sicurezza e quella che consente il comando, il controllo e la configurazione in base alla progettazione può essere piuttosto un buco. Certificati, IPSec e regole del firewall con ambito sono i tuoi amici!
Nota che non ho esperienza diretta con WS-Management, né WinRM, quindi YMMV .
So che puoi installare wmi-client su Linux (sudo apt-get install wmi-client). Dovresti essere in grado di interrogare qualsiasi oggetto wmi su una finestra di Windows dalla riga di comando di Linux usando questo.