about_WMI

Kort beskrivning

Windows Management Instrumentation (WMI) använder Common Information Model (CIM) för att representera system, program, nätverk, enheter och andra hanterbara komponenter i det moderna företaget.

Lång beskrivning

Windows Management Instrumentation (WMI) är Microsofts implementering av Web-Based Enterprise Management (WBEM), branschstandarden.

Klassisk WMI använder DCOM för att kommunicera med nätverksenheter för att hantera fjärrsystem. Windows PowerShell 3.0 introducerar en CIM-providermodell som använder WinRM för att ta bort beroendet av DCOM. Den här CIM-providermodellen använder också nya WMI-provider-API:er som gör det möjligt för utvecklare att skriva Windows PowerShell-cmdletar i inbyggd kod (C++).

Blanda inte ihop WMI-leverantörer med Windows PowerShell-leverantörer. Många Windows-funktioner har en associerad WMI-provider som exponerar deras hanteringsfunktioner. För att hämta WMI-providrar kör du en WMI-fråga som hämtar instanser av WMI-klassen __Provider , till exempel följande fråga.

Get-WmiObject -Class __Provider

Tre komponenter i WMI

Följande tre komponenter i WMI interagerar med Windows PowerShell: Namnområden, providers och klasser.

WMI-namnområden organiserar WMI-providers och WMI-klasser i grupper med relaterade komponenter. På så sätt liknar de .NET Framework-namnområden. Namnområden är inte fysiska platser, men liknar mer logiska databaser. Alla WMI-namnområden är instanser av systemklassen __Namespace. WMI-standardnamnområdet är root/CIMV2 (sedan Microsoft Windows 2000). Om du vill använda Windows PowerShell för att hämta WMI-namnområden i den aktuella sessionen använder du ett kommando med följande format.

Get-WmiObject -Class __Namespace

Om du vill hämta WMI-namnområden i andra namnområden använder du parametern Namnområde för att ändra sökplatsen. Följande kommando hittar WMI-namnområden som finns i rot/CIMV2/Applications namnområde.

Get-WmiObject -Class __Namespace -Namespace root/CIMV2/Applications

WMI-namnområden är hierarkiska. Därför måste du utföra en rekursiv fråga som börjar på rotnamnområdet för att hämta en lista över alla namnområden i ett visst system.

WMI-leverantörer exponerar information om hanterbara Windows-objekt. En provider hämtar data från en komponent och skickar dessa data via WMI till ett hanteringsprogram, till exempel Windows PowerShell. De flesta WMI-leverantörer är dynamiska leverantörer, vilket innebär att de hämtar data dynamiskt när de begärs via hanteringsprogrammet.

Hitta WMI-klasser

I en standardinstallation av Windows 8 finns det fler än 1 100 WMI-klasser i root/CIMV2-. Med så här många WMI-klasser blir utmaningen att identifiera lämplig WMI-klass som ska användas för att utföra en specifik uppgift. Windows PowerShell 3.0 innehåller två sätt att hitta WMI-klasser som är relaterade till ett specifikt ämne.

Om du till exempel vill hitta WMI-klasser i root/CIMV2 WMI-namnrymd som är relaterade till diskar kan du använda en fråga som den som visas här.

Get-WmiObject -List *Disk*

Om du vill hitta WMI-klasser som är relaterade till minne kan du använda en fråga som den som visas här.

Get-WmiObject -List *Memory*

CIM-cmdletarna ger också möjlighet att identifiera WMI-klasser. Det gör du genom att använda cmdleten Get-CimClass . Kommandot som visas här visar WMI-klasser relaterade till video.

Get-CimClass *Video*

Flikexpansion fungerar när WMI-namnrymder ändras, och därför kan du enkelt identifiera under-WMI-namnområden med hjälp av flikexpansion. I följande exempel visar cmdleten Get-CimClass WMI-klasser relaterade till energisparinställningar. Om du vill hitta den skriver du root/CIMV2 namnrymd och trycker sedan på tabbtangenten flera gånger tills ström namnområde visas. Här är kommandot:

Get-CimClass *Power* -Namespace root/CIMV2/power