Creazione di client WMI

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

Come creare un client WMI

La funzionalità di base di WMI consiste nel recuperare oggetti dal repository WMI ed esaminare le proprietà di tali oggetti. È anche possibile scegliere di aggiornare tali proprietà o chiamare metodi su tali proprietà. Negli esempi seguenti viene illustrato 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 chiamata al 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 indica molti dei parametri predefiniti $myComputer = Get-WmiObject -ComputerName "." -Namespace "root\cimv2" -Query "SELECT * FROM Win32_ComputerSystem" ($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 usato comunemente con 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 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). L'istanza gestita è attualmente la tecnologia supportata per la creazione di client di gestione gestiti. Per altre informazioni, vedere How to Implement a Managed MI Client (Come implementare un client MI gestito ) e How to Implement a Native MI Client (Come implementare un client MI nativo).

C#
utilizzando Microsoft.Management.Infrastructure; ... Sessione CimSession = CimSession.Create("localHost"); IEnumerableCimInstance< 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 scalabili. Di conseguenza, è consigliabile usare le classi MI anziché le classi WMI originali.

C#
utilizzando Microsoft.Management.Infrastructure; ... Sessione CimSession = CimSession.Create("localHost"); IEnumerableCimInstance< 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 alcuni 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 WMI o di uno script Fornisce informazioni sulla creazione di vari client WMI.
Monitoraggio dei dati sulle prestazioni Viene descritto 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 linguaggio di query WMI (WQL).
Esecuzione di query sullo stato delle funzionalità facoltative In Windows 7 WMI ha implementato la classe Win32_OptionalFeature. Questa classe recupera lo stato delle funzionalità facoltative presenti in un computer.
Descrizione della posizione di un oggetto WMI È incentrata sulla sintassi per descrivere la posizione 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 consentono ai client WMI (Management Instrumentation) di Windows di attraversare e recuperare profili e istanze di classe associate da spazi dei nomi diversi.
Modifica delle informazioni sulle classi e sulle istanze Descrive le attività comuni che i client WMI devono eseguire.
Collegamento di classi tra loro Viene illustrato il provider di viste e come può essere usato per riunire informazioni da più classi WMI.
Modifica del Registro di sistema Descrive in che modo i client WMI possono usare WMI per gestire le informazioni del Registro di sistema.