Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ten przykład dotyczy tylko platform systemu Windows.
Instrumentacja zarządzania Windows (WMI) to podstawowa technologia administracji systemu Windows, ponieważ uwidacznia szeroką gamę informacji w jednolity sposób. Dzięki swojemu szerokiemu zastosowaniu, polecenie cmdlet programu PowerShell umożliwiające dostęp do obiektów WMI, Get-CimInstance, jest jednym z najbardziej użytecznych do wykonywania rzeczywistych zadań. Omówimy sposób używania poleceń cmdlet modelu CIM do uzyskiwania dostępu do obiektów WMI, a następnie używania obiektów WMI do wykonywania określonych czynności.
Lista klas WMI
Pierwszym problemem, z jakim borykają się większość użytkowników usługi WMI, jest próba ustalenia, co można zrobić za pomocą usługi WMI. Klasy WMI opisują zasoby, którymi można zarządzać. Istnieją setki klas WMI, z których niektóre zawierają dziesiątki właściwości.
Get-CimClass rozwiązuje ten problem, czyniąc usługę WMI łatwą do odnalezienia. Listę klas WMI dostępnych na komputerze lokalnym można uzyskać, wpisując:
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
...
Te same informacje można pobrać z komputera zdalnego przy użyciu parametru ComputerName, określając nazwę komputera lub adres IP:
Get-CimClass -Namespace root/CIMV2 -ComputerName 192.168.1.29
Lista klas zwracana przez komputery zdalne może się różnić w zależności od określonego systemu operacyjnego, na którym jest uruchomiony komputer, a poszczególne rozszerzenia WMI są dodawane przez zainstalowane aplikacje.
Uwaga
W przypadku nawiązywania połączenia z komputerem zdalnym za pomocą poleceń cmdlet modelu CIM komputer zdalny musi mieć uruchomioną usługę WMI, a używane konto musi znajdować się w lokalnej grupie administratorzy na komputerze zdalnym. System zdalny nie musi mieć zainstalowanego programu PowerShell. Dzięki temu można administrować systemami operacyjnymi, które nie działają w programie PowerShell, ale mają dostępną usługę WMI.
Wyświetlanie szczegółów klasy WMI
Jeśli znasz już nazwę klasy WMI, możesz użyć jej do natychmiastowego pobrania informacji. Na przykład jedną z klas WMI, które są często używane do pobierania informacji o komputerze, jest Win32_OperatingSystem.
Get-CimInstance -Class Win32_OperatingSystem
SystemDirectory Organization BuildNumber RegisteredUser SerialNumber Version
--------------- ------------ ----------- -------------- ------------ -------
C:\WINDOWS\system32 Microsoft 22621 USER1 00330-80000-00000-AA175 10.0.22621
Mimo że wyświetlamy wszystkie parametry, polecenie można wyrazić w bardziej zwięzły sposób.
Parametr ComputerName nie jest konieczny podczas nawiązywania połączenia z systemem lokalnym. Pokażemy go, aby zademonstrować najbardziej ogólny przypadek i przypomnieć o parametrze. Domyślną przestrzenią nazw jest root/CIMV2, i można go również pominąć. Na koniec większość poleceń cmdlet umożliwia pominięcie nazwy typowych parametrów. W przypadku Get-CimInstance, jeśli dla pierwszego parametru nie określono żadnej nazwy, program PowerShell traktuje go jako parametr klasy. Oznacza to, że ostatnie polecenie mogło zostać wydane przez wpisanie:
Get-CimInstance Win32_OperatingSystem
Klasa Win32_OperatingSystem ma o wiele więcej właściwości niż wyświetlane tutaj. Aby wyświetlić wszystkie właściwości, możesz użyć Get-Member. Właściwości klasy WMI są automatycznie dostępne jak inne właściwości obiektu:
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 int16 CurrentTimeZone {get;}
DataExecutionPrevention_32BitApplications Property bool DataExecutionPrevention_32BitApplications {get;}
DataExecutionPrevention_Available Property bool DataExecutionPrevention_Available {get;}
...
Wyświetlanie właściwości innych niż domyślne za pomocą poleceń cmdlet formatu
Jeśli chcesz wyświetlić informacje zawarte w klasie Win32_OperatingSystem, które nie są wyświetlane domyślnie, możesz to zrobić przy użyciu poleceń cmdlet Format. Jeśli na przykład chcesz wyświetlić dostępne dane pamięci, wpisz:
Get-CimInstance -Class Win32_OperatingSystem | Format-Table -Property TotalVirtualMemorySize, TotalVisibleMemorySize, FreePhysicalMemory, FreeVirtualMemory, FreeSpaceInPagingFiles
TotalVirtualMemorySize TotalVisibleMemorySize FreePhysicalMemory FreeVirtualMemory FreeSpaceInPagingFiles
---------------------- ---------------------- ------------------ ----------------- ----------------------
41787920 16622096 9537952 33071884 25056628
Uwaga
Symbole wieloznaczne działają z nazwami właściwości w Format-Table, więc końcowy element potoku można sprowadzić do Format-Table -Property Total*Memory*, Free*
Dane pamięci mogą być bardziej czytelne, jeśli formatujesz je jako listę, wpisując:
Get-CimInstance -Class Win32_OperatingSystem | Format-List Total*Memory*, Free*
TotalVirtualMemorySize : 41787920
TotalVisibleMemorySize : 16622096
FreePhysicalMemory : 9365296
FreeSpaceInPagingFiles : 25042952
FreeVirtualMemory : 33013484
Name : Microsoft Windows 11 Pro|C:\Windows|\Device\Harddisk0\Partition2