Hämta WMI-objekt (Get-CimInstance)

Hämta WMI-objekt (Get-CimInstance)

Windows Management Instrumentation (WMI) är en kärnteknik för Windows systemadministration eftersom den exponerar en mängd information på ett enhetligt sätt. På grund av hur mycket WMI som är möjligt är PowerShell-cmdleten för åtkomst till WMI-objekt, , ett av de mest användbara för Get-CimInstance att göra verkligt arbete. Vi kommer att diskutera hur du använder CimCmdlets för att komma åt WMI-objekt och hur du använder WMI-objekt för att göra specifika saker.

Lista WMI-klasser

Det första problemet som de flesta WMI-användare stöter på är att försöka ta reda på vad som kan göras med WMI. WMI-klasser beskriver de resurser som kan hanteras. Det finns hundratals WMI-klasser, varav vissa innehåller dussintals egenskaper.

Get-CimClass åtgärdar det här problemet genom att göra det möjligt att identifiera WMI. Du kan hämta en lista över de WMI-klasser som är tillgängliga på den lokala datorn genom att skriva:

Get-CimClass -Namespace root/CIMV2 |
  Where-Object CimClassName -like Win32* |
    Select-Object CimClassName
CimClassName
------------
Win32_DeviceChangeEvent
Win32_SystemConfigurationChangeEvent
Win32_VolumeChangeEvent
Win32_SystemTrace
Win32_ProcessTrace
Win32_ProcessStartTrace
Win32_ProcessStopTrace
Win32_ThreadTrace
Win32_ThreadStartTrace
Win32_ThreadStopTrace
...

Du kan hämta samma information från en fjärrdator med hjälp av parametern ComputerName och ange ett datornamn eller en IP-adress:

Get-CimClass -Namespace root/CIMV2 -ComputerName 192.168.1.29

Klasslistan som returneras av fjärrdatorer kan variera på grund av det specifika operativsystem som datorn kör och de specifika WMI-tillägg som läggs till av installerade program.

Anteckning

När du använder CIM-cmdlets för att ansluta till en fjärrdator måste fjärrdatorn köra WMI och det konto som du använder måste finnas i den lokala administratörsgruppen på fjärrdatorn. Fjärrsystemet behöver inte ha PowerShell installerat. På så sätt kan du administrera operativsystem som inte kör PowerShell, men som har WMI tillgängligt.

Visa information om WMI-klass

Om du redan känner till namnet på en WMI-klass kan du använda den för att hämta information direkt. Till exempel är en av de WMI-klasser som ofta används för att hämta information om en dator Win32_OperatingSystem.

Get-CimInstance -Class Win32_OperatingSystem
SystemDirectory     Organization BuildNumber RegisteredUser SerialNumber            Version
---------------     ------------ ----------- -------------- ------------            -------
C:\WINDOWS\system32 Microsoft    18362       USER1          00330-80000-00000-AA175 10.0.18362

Även om vi visar alla parametrar kan kommandot uttryckas på ett mer kortfattat sätt. Parametern ComputerName är inte nödvändig vid anslutning till det lokala systemet. Vi visar den för att demonstrera det mest allmänna fallet och påminner dig om parametern . Namnområdet får som standard root/CIMV2 , och kan även utelämnas. Slutligen tillåter de flesta cmdlets att du utelämnar namnet på vanliga parametrar. Om Get-CimInstance inget namn har angetts för den första parametern behandlar PowerShell det som klassparametern med . Det innebär att det sista kommandot kunde ha utfärdats genom att skriva:

Get-CimInstance Win32_OperatingSystem

Klassen Win32_OperatingSystem har många fler egenskaper än de som visas här. Du kan använda Get-Member för att se alla egenskaper. Egenskaperna för en WMI-klass är automatiskt tillgängliga som andra objektegenskaper:

Get-CimInstance -Class Win32_OperatingSystem | Get-Member -MemberType Property
   TypeName: Microsoft.Management.Infrastructure.CimInstance#root/cimv2/Win32_OperatingSystem
Name                                      MemberType Definition
----                                      ---------- ----------
BootDevice                                Property   string BootDevice {get;}
BuildNumber                               Property   string BuildNumber {get;}
BuildType                                 Property   string BuildType {get;}
Caption                                   Property   string Caption {get;}
CodeSet                                   Property   string CodeSet {get;}
CountryCode                               Property   string CountryCode {get;}
CreationClassName                         Property   string CreationClassName {get;}
CSCreationClassName                       Property   string CSCreationClassName {get;}
CSDVersion                                Property   string CSDVersion {get;}
CSName                                    Property   string CSName {get;}
CurrentTimeZone                           Property   short CurrentTimeZone {get;}
DataExecutionPrevention_32BitApplications Property   bool DataExecutionPrevention_32BitApplications {get;}
DataExecutionPrevention_Available         Property   bool DataExecutionPrevention_Available {get;}
...

Visa egenskaper som inte är standard med format-cmdlets

Om du vill ha information i Win32_OperatingSystem som inte visas som standard kan du visa den med hjälp av cmdletarna Format. Om du till exempel vill visa tillgängliga minnesdata skriver du:

Get-CimInstance -Class Win32_OperatingSystem |
  Format-Table -Property TotalVirtualMemorySize, TotalVisibleMemorySize,
    FreePhysicalMemory, FreeVirtualMemory, FreeSpaceInPagingFiles
TotalVirtualMemorySize TotalVisibleMemorySize FreePhysicalMemory FreeVirtualMemory FreeSpaceInPagingFiles
---------------------- ---------------------- ------------------ ----------------- ----------------------
              33449088               16671872            6451868          18424496               16285032

Anteckning

Jokertecken fungerar med egenskapsnamn i Format-Table , så det slutliga pipelineelementet kan reduceras till Format-Table -Property Total*Memory*, Free*

Minnesdata kan vara mer läsbara om du formaterar dem som en lista genom att skriva:

Get-CimInstance -Class Win32_OperatingSystem | Format-List Total*Memory*, Free*
TotalVirtualMemorySize : 33449088
TotalVisibleMemorySize : 16671872
FreePhysicalMemory     : 6524456
FreeSpaceInPagingFiles : 16285808
FreeVirtualMemory      : 18393668
Name                   : Microsoft Windows 10 Pro|C:\WINDOWS|\Device\Harddisk0\Partition2