Creazione di client WMI

WMI offre un'infrastruttura di gestione di sistema standardizzata che può essere sfruttata da diversi client. Questi client vanno dallo strumento wmic.exe riga di comando a System Center Operations Manager. È possibile scrivere client WMI personalizzati usando l'API scripting WMI, l'API C++ nativa o i tipi nello spazio dei nomi della libreria di classi system.Management .NET Framework.

Come creare un client WMI

La funzionalità principale di WMI è costituita dal recupero di oggetti dal repository WMI e dall'esame delle proprietà di tali oggetti. È anche possibile scegliere di aggiornare tali proprietà o chiamare metodi su tali proprietà. Gli esempi seguenti illustrano come eseguire un'attività di amministrazione WMI di base: recupero del nome del computer locale.

Termine Descrizione
Creazione di un client con PowerShell
WMI e PowerShell sono strettamente integrati; Di conseguenza, il recupero di oggetti WMI con PowerShell è semplicemente una questione di chiamare il cmdlet Get-WmiObject. Si noti che per coerenza, il primo frammento di codice indica in modo esplicito molti dei valori predefiniti. il secondo presuppone che i valori predefiniti siano corretti.

PowerShell
#explicitly states many of the default parameters
$myComputer = Get-WmiObject -ComputerName "." -Namespace "root\cimv2" -Query "SELECT * FROM Win32_ComputerSystem"
foreach ($computer in $myComputer)
{ "System Name: " + $computer.name }

#assumes the default values are correct Get-WmiObject Win32_ComputerSystem | Format-Table "Name"

Creazione di un client con VBScript

VBScript era il linguaggio di scripting originale che usava comunemente WMI. Anche se PowerShell è diventato più diffuso, molti degli esempi di codice esistenti in questa documentazione sono scritti in VBScript. Si noti che questo particolare esempio di VBScript indica in modo esplicito sia il percorso del computer locale che il livello di rappresentazione. questo non è obbligatorio, ma è spesso una procedura consigliata.

VB
strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_ComputerSystem")
For Each objItem in colItems
    Wscript.Echo "Computer Name: " & objItem.Name
Next

Creazione di un client con C# (Microsoft.Management.Infrastructure)

Questo spazio dei nomi contiene la soluzione corrente per l'accesso a WMI con codice gestito ed è noto come Windows Management Infrastructure (MI o WMIv2). Attualmente, MI è la tecnologia supportata per la creazione di client di gestione gestita. Per altre informazioni, vedere Come implementare un client MI gestito e Come implementare un client MI nativo.

C#
using Microsoft.Management.Infrastructure;
...
CimSession session = CimSession.Create("localHost");
IEnumerable<CimInstance> queryInstance = session.QueryInstances(@"root\cimv2", "WQL", "SELECT * FROM Win32_ComputerSystem");

foreach (CimInstance cimObj in queryInstance) { Console.WriteLine(cimObj.CimInstanceProperties["Name"].ToString()); }

Creazione di un client con C# (System.Management)

Questo spazio dei nomi contiene la soluzione originale per l'accesso a WMI con codice gestito. Anche se le classi System.Management sono ancora disponibili, le classi Microsoft.Management.Infrastructure sono in genere più efficienti e sono più scalabili. Di conseguenza, è consigliabile usare le classi MI anziché le classi WMI originali.

C#
using Microsoft.Management.Infrastructure;
...
CimSession session = CimSession.Create("localHost");
IEnumerable<CimInstance> queryInstance = session.QueryInstances(@"root\cimv2", "WQL", "SELECT * FROM Win32_ComputerSystem");

foreach (CimInstance cimObj in queryInstance) { Console.WriteLine(cimObj.CimInstanceProperties["Name"].ToString()); }

Nella tabella seguente sono elencati gli argomenti inclusi in questa sezione.

Argomento Descrizione
Connessione a WMI in un computer remoto Descrive una serie di problemi che si verificano quando i client usano l'infrastruttura WMI in un computer remoto.
Attività WMI per script e applicazioni Mostra il codice client WMI di esempio.
Creazione di un'applicazione o di uno script WMI Fornisce informazioni sulla creazione di vari client WMI.
Monitoraggio dei dati sulle prestazioni Descrive come usare WMI per monitorare i dati sulle prestazioni.
Ricezione di un evento WMI Viene descritto come visualizzare gli eventi WMI.
Monitoraggio degli eventi Viene descritto come monitorare gli eventi WMI.
Esecuzione di query con WQL Introduce il WMI Query Language (WQL).
Esecuzione di query sullo stato delle funzionalità facoltative In Windows 7 WMI ha implementato la classe _ OptionalFeature Win32. Questa classe recupera lo stato delle funzionalità facoltative presenti in un computer.
Descrizione del percorso di un oggetto WMI Si concentra sulla sintassi per descrivere il percorso di un'entità gestita WMI.
Accesso ad altre funzionalità del sistema operativo con WMI Descrive come scrivere client WMI che accedono a driver di dispositivo, Active Directory e dispositivi SNMP.
Accesso ai dati nello spazio dei nomi di interoperabilità I provider di associazioni Windows client di Strumentazione gestione Windows (WMI) per attraversare e recuperare profili e istanze di classe associate da spazi dei nomi diversi.
Modifica delle informazioni su classi e istanze Descrive le attività comuni che i client WMI devono eseguire.
Collegamento di classi tra loro Illustra il provider di visualizzazione e come può essere usato per riunire le informazioni di più classi WMI.
Modifica del Registro di sistema Descrive come i client WMI possono usare WMI per gestire le informazioni del Registro di sistema.