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