WMI è l'acronimo di Windows Management Instrumentation. Progettata da Microsoft, è un'infrastruttura per la gestione standardizzata di dati e informazioni, indipendente dai dispositivi. Da Windows 2000, WMI è preinstallato nei sistemi operativi Windows.
WMI è l'implementazione Microsoft del Web-Based Enterprise Management (WBEM), gestito dalla Distributed Management Task Force (DMTF). Il WBEM definisce gli standard per consentire l'accesso ai dati da tecnologie e dispositivi non uniformi attraverso un'architettura standardizzata. Il WBEM utilizza il Common Information Model (CIM) come schema per definire le informazioni sugli oggetti.
Anche se non fa direttamente parte di WMI, CIM è uno standard neutrale rispetto ai fornitori per rappresentare le informazioni di gestione di vari dispositivi. Anch'esso è gestito dal DMTF.
WMI utilizza questo schema per memorizzare le informazioni nel repository WMI. IT è strutturato in modo che l'ambiente gestito possa essere visto come un sistema interrelato, ciascuno composto da elementi discreti. Un insieme predefinito di classi e proprietà crea un quadro di riferimento da cui i singoli fornitori possono costruire.
Gli avvisi personalizzati e la visualizzazione dei dati consentono di identificare e prevenire rapidamente i problemi di salute e di prestazioni della rete.
Per funzionare come server, un dispositivo deve essere configurato per ascoltare le richieste dei client su una connessione di rete. Questa funzionalità può far parte del sistema operativo come applicazione installata, ruolo o una combinazione dei due.
Ad esempio, il sistema operativo Windows Server di Microsoft fornisce la funzionalità di ascolto e risposta alle richieste dei client. Inoltre, i ruoli o i servizi installati aumentano i tipi di richieste client a cui il server può rispondere. In un altro esempio, un server Web Apache risponde alle richieste dei browser Internet tramite un'applicazione aggiuntiva, Apache, installata su un sistema operativo.
Quando un client richiede dati o funzionalità a un server, invia una richiesta in rete. Il server riceve la richiesta e risponde con le informazioni appropriate. Questo è il modello di richiesta e risposta della rete client-server, noto anche come modello di chiamata e risposta.
Un server spesso esegue numerose attività aggiuntive nell'ambito di una singola richiesta e risposta, tra cui la verifica dell'identità del richiedente, la garanzia che il client abbia il permesso di accedere ai dati o alle risorse richieste e la corretta formattazione o restituzione della risposta richiesta nel modo previsto.
Quando i dispositivi di una rete funzionano, è possibile misurare e generare in qualsiasi momento diverse impostazioni, parametri e stati. Ad esempio, un disco rigido ha una capacità di memoria totale, una capacità di memoria utilizzata, una quantità di memoria libera o una temperatura interna. Questi valori sono dinamici e cambiano con l'utilizzo del sistema. In qualsiasi momento, i valori esistono, indipendentemente dal fatto che qualcuno li noti o meno.
La piattaforma WMI offre un modo uniforme per creare ed eseguire script che leggono e, in alcuni casi, possono modificare tali impostazioni senza dover installare agenti software o monitor aggiuntivi. Nel caso del disco rigido, un provider WMI sarebbe in grado di rispondere a una richiesta di temperatura del disco rigido e di inviare un avviso al gestore di oggetti WMI se la temperatura supera un livello predefinito.
Inoltre, per le applicazioni di gestione, la piattaforma WMI offre un'interfaccia di programmazione delle applicazioni (API) a livello di WMI Object Manager, in modo che non sia necessario comprendere le specifiche di un singolo provider WMI. L'applicazione di gestione deve solo chiamare l'Object Manager e non interrogare direttamente il disco rigido, ad esempio.
Quando si interroga un dispositivo o si attiva un evento, i dati viaggiano attraverso l'architettura standard del dispositivo gestito, passando dal suo provider WMI al gestore di oggetti WMI e al consumatore WMI. L'intera infrastruttura è standardizzata tra i dispositivi e le piattaforme, in modo che qualsiasi software di gestione aziendale abilitato a WMI possa accedere ai dati raccolti su qualsiasi dispositivo abilitato a WMI senza dover conoscere nulla dei dispositivi o della struttura della rete tra di essi. WMI è disponibile su qualsiasi computer Windows e può quindi essere gestito tramite WMI.
Notifiche in tempo reale significano una risoluzione più rapida dei problemi, in modo da poter intervenire prima che si verifichino problemi più gravi.
WMI è una parte integrata del sistema operativo Windows. L'infrastruttura WMI è implementata in Windows come servizio WMI. Il servizio WMI funge da intermediario tra i provider WMI, il repository WMI e le applicazioni di gestione. Il servizio WMI viene eseguito con il nome di Windows Management Instrumentation sotto il nome di servizio winmgmt. Viene eseguito automaticamente all'avvio e, se fermato, si avvia automaticamente quando un'applicazione o uno script di gestione richiede una connessione a un namespace WMI.
Un oggetto gestito è qualsiasi componente o servizio logico o fisico che può essere gestito tramite WMI. Può trattarsi di processori, adattatori di rete, sistemi operativi, servizi, applicazioni, unità disco, memoria o qualsiasi altra apparecchiatura collegata alla rete.
In generale, se è possibile accedere al parametro in questione tramite un altro strumento di Windows, ad esempio un monitor delle prestazioni, è possibile accedere alle stesse informazioni tramite WMI.
Un provider WMI è un oggetto che monitora, legge e raccoglie i dati di monitoraggio di uno specifico oggetto gestito. Come i driver di dispositivo, alcuni monitoraggi sono build nel sistema operativo, mentre altri sono implementati da terze parti o in modo programmatico, di solito tramite C/C++, Visual Basic, VBScript o PowerShell. È possibile accedere al provider anche tramite la riga di comando (Windows Management Interface Command-line, o WMIC).
I monitoraggi possono essere generali o specifici per un dispositivo. Il monitoraggio in sé non fa altro che osservare o monitorare i dati che vengono generati. I monitor non registrano o memorizzano i dati, anche se possono essere impostati in modo da scrivere i dati in un file di logs o nel Visualizzatore eventi se viene soddisfatta una determinata condizione.
In Windows esistono numerosi provider WMI integrati, tra cui un provider Active Directory, un provider WMI per i dati di configurazione di avvio (BCD), un provider DFS (Distributed File System), un provider per il registro eventi, un provider WMI per Hyper-V, un provider Win32, un provider per il registro e un provider SNMP. Il provider SNMP mappa gli oggetti MIB SNMP in classi CIM WMI. In questo modo è possibile utilizzare WMI anche su dispositivi non Windows tramite il loro SNMP integrato.
I provider WMI rispondono a interrogazioni dirette da applicazioni o script di gestione e a eventi programmati. La configurazione di un evento richiede un trigger di evento e dei sottoscrittori di evento. Il trigger viene impostato definendo il momento in cui l'evento diventa segnalabile o attivabile. Ad esempio, un evento può essere attivato quando la quantità di spazio libero su disco scende al di sotto di un certo valore. Durante l'esecuzione, il provider WMI si limita a monitorare la quantità di spazio libero su disco. Quando la quantità scende al di sotto della soglia preimpostata, il provider WMI avvisa il CIM Object Manager. Il CIM Object Manager inoltra quindi l'avviso ai consumatori o sottoscrittori di eventi predefiniti, che in genere sono applicazioni di gestione aziendale o registri eventi.
Ogni provider WMI implementa la funzionalità delle sue classi. Le classi contengono eventi e proprietà che consentono l'acquisizione e l'impostazione dei dati. Le classi di sistema WMI sono classi predefinite che forniscono le funzionalità di base di WMI. Queste classi iniziano con un doppio trattino basso, come __SystemEvent, che rappresenta un evento di sistema. Esistono anche classi MSFT che sono classi di provider di policy o classi di risoluzione dei problemi WMI. Le classi CIM possono essere utilizzate per costruire nuove classi. Le nuove classi erediteranno le proprietà dalla loro classe CIM madre.
Esistono anche classi consumer standard. Queste vengono utilizzate per eseguire script o programmi quando si verifica un evento scatenante. Una classe consumer standard comunemente utilizzata è ActiveScriptEventConsumer, che esegue uno script quando riceve una risposta. È un modo per creare una risposta automatica a un particolare evento o situazione, come l'invio di un messaggio, l'arresto o l'avvio di un servizio o persino il riavvio e lo spegnimento di un sistema o di un componente.
Alcune classi hanno metodi che offrono i dati specifici che possono essere monitorati o modificati. Ad esempio, la classe Win32_Service ha metodi per l'arresto e l'avvio dei servizi. A questi metodi si può accedere tramite un'applicazione di scripting o di gestione della rete.
Il repository WMI è un database che memorizza i dati statici relativi a WMI. I dati dinamici monitorati dai provider WMI non vengono memorizzati nel repository. Per conservare i dati dinamici, questi devono essere acquisiti da un provider WMI e recuperati o riportati da un'applicazione di gestione WMI o loggati tramite una classe di provider WMI. WMI utilizza un repository di oggetti conforme a CIM.
Il CIM Object Manager funge da intermediario tra un'applicazione di gestione e i provider WMI. Accessibile dal lato dell'applicazione tramite l'API WMI, Object Manager inoltra le richieste di dati ai provider WMI e riceve le risposte prima di inoltrare le informazioni all'applicazione di gestione richiedente.
L'API fornisce l'accesso all'infrastruttura WMI per le applicazioni che utilizzano WMI. Queste applicazioni effettuano chiamate API che vengono passate nel CIM Object Manager e quindi inviate ai provider. Questi rispondono tramite classi e metodi con dati quali il tempo di attività del sistema o il numero di processi in esecuzione.
Il consumatore è ciò che invia query e riceve informazioni da un provider WMI tramite il WMI Object Manager. In genere, un consumatore WMI è un'applicazione di monitoraggio, come PRTG Network Monitor, un'applicazione di gestione o uno script, come uno script PowerShell, che interroga i valori su un sistema remoto prima di eseguire un'azione come l'aggiornamento del software o la scrittura di un file.
Ad esempio, un amministratore che esegue lo script di un aggiornamento può utilizzare PowerShell per interrogare un provider WMI e verificare la versione di Windows prima di inviare l'aggiornamento. Il consumatore può interrogare i provider WMI per ottenere valori che possono essere monitorati o addirittura modificati da un amministratore. Solo alcuni valori sono scrivibili in questo modo.
La possibilità di accedere e modificare in remoto le informazioni e i dati del dispositivo deve essere protetta. Windows offre diversi livelli di sicurezza che proteggono i sistemi remoti. Il firewall Windows Defender ha un'impostazione specifica per il traffico WMI, separata da quella abituale per il traffico DCOM. Se il WMI è bloccato dal firewall, non è possibile stabilire una connessione.
Inoltre, il filtro standard dei token di accesso del Controllo account utente (UAC) influisce sulle operazioni WMI. Anche quando si accede come amministratore, i programmi o gli script basati su WMI vengono eseguiti con il filtro dei token di accesso UAC standard, a meno che non vengano eseguiti con privilegi elevati ("Esegui come amministratore"). In molte circostanze, i metodi e le classi dei provider WMI accedono a dati privilegiati e richiedono autorizzazioni di accesso più elevate per essere eseguiti correttamente.
A prima vista, PowerShell sembra avere poco supporto per WMI. Tuttavia, un singolo cmdlet Get-WmiObject consente di accedere alla maggior parte dei parametri WMI. Il cmdlet Get-WmiObject può utilizzare il parametro -ComputerName per accedere a un computer remoto. Ad esempio, Get-WmiObject -Class Win32_service -ComputerName Accounting235 consente di ottenere un elenco dei servizi (e del loro stato attuale) in esecuzione su un computer remoto denominato Accounting235.
Sebbene WMI possa essere utilizzato tramite diversi linguaggi di scripting, tra cui PowerShell, dispone di una propria interfaccia a riga di comando. WMIC è compatibile con le shell esistenti, compresa la riga di comando standard di Windows. Per utilizzarla, è sufficiente digitare wmic e il comando.
Il comando SET può modificare o scrivere su alcuni parametri. Utilizzando l'interruttore /? si ottiene un elenco di proprietà scrivibili. Ad esempio, è possibile impostare il fuso orario corrente utilizzando il comando set os.
PRTG Network Monitor è un software di monitoraggio di rete completo e tiene traccia dell'intera infrastruttura IT.
Microsoft offre ora Windows Management Infrastructure (MI), l'ultima versione di WMI. Secondo Microsoft, MI è pienamente compatibile con le versioni precedenti di WMI e offre tempi di sviluppo ridotti e una maggiore integrazione con PowerShell.