Zbieranie informacji dotyczących komputerów

Ten przykład dotyczy tylko platform systemu Windows.

Polecenia cmdlet z modułu CimCmdlets to najważniejsze polecenia cmdlet dla ogólnych zadań zarządzania systemem. Wszystkie ustawienia podsystemu krytycznego są udostępniane za pośrednictwem usługi WMI. Ponadto usługa WMI traktuje dane jako obiekty, które znajdują się w kolekcjach co najmniej jednego elementu. Ponieważ program PowerShell współpracuje również z obiektami i ma potok, który umożliwia traktowanie pojedynczych lub wielu obiektów w taki sam sposób, ogólny dostęp do usługi WMI umożliwia wykonywanie niektórych zaawansowanych zadań z bardzo małą ilością pracy.

Wyświetlanie listy ustawień pulpitu

Zaczniemy od polecenia, które zbiera informacje o komputerach stacjonarnych na komputerze lokalnym.

Get-CimInstance -ClassName Win32_Desktop

Spowoduje to zwrócenie informacji dla wszystkich komputerów stacjonarnych, niezależnie od tego, czy są one używane, czy nie.

Uwaga

Informacje zwracane przez niektóre klasy WMI mogą być bardzo szczegółowe i często zawierają metadane dotyczące klasy WMI.

Ponieważ większość tych właściwości metadanych ma nazwy rozpoczynające się od modelu Cim, można filtrować właściwości przy użyciu polecenia Select-Object. Określ parametr -ExcludeProperty z wartością "Cim*". Na przykład:

Get-CimInstance -ClassName Win32_Desktop | Select-Object -ExcludeProperty "CIM*"

Aby odfiltrować metadane, użyj operatora potoku (|), aby wysłać wyniki Get-CimInstance polecenia do Select-Object -ExcludeProperty "CIM*".

Wyświetlanie informacji o systemie BIOS

Klasa WMI Win32_BIOS zwraca dość kompaktowe i kompletne informacje o systemie BIOS na komputerze lokalnym:

Get-CimInstance -ClassName Win32_BIOS

Wyświetlanie informacji o procesorze

Ogólne informacje o procesorze można pobrać przy użyciu klasy Win32_Processor usługi WMI, chociaż prawdopodobnie chcesz filtrować informacje:

Get-CimInstance -ClassName Win32_Processor | Select-Object -ExcludeProperty "CIM*"

W przypadku ogólnego ciągu opisu rodziny procesorów można po prostu zwrócić właściwość SystemType :

Get-CimInstance -ClassName Win32_ComputerSystem | Select-Object -Property SystemType

SystemType
----------
X86-based PC

Wyświetlanie listy producentów i modeli komputerów

Informacje o modelu komputera są również dostępne w Win32_ComputerSystem. Standardowe wyświetlane dane wyjściowe nie będą wymagały żadnego filtrowania w celu zapewnienia danych producenta OEM:

Get-CimInstance -ClassName Win32_ComputerSystem
Name PrimaryOwnerName Domain    TotalPhysicalMemory Model                   Manufacturer
---- ---------------- ------    ------------------- -----                   ------------
MyPC Jane Doe         WORKGROUP 804765696           DA243A-ABA 6415cl NA910 Compaq Presario 06

Dane wyjściowe z poleceń takich jak te, które zwracają informacje bezpośrednio z niektórych sprzętu, są tak dobre, jak posiadane dane. Niektóre informacje nie są poprawnie skonfigurowane przez producentów sprzętu i dlatego mogą być niedostępne.

Wyświetlanie listy zainstalowanych poprawek

Listę wszystkich zainstalowanych poprawek można wyświetlić przy użyciu Win32_QuickFixEngineering:

Get-CimInstance -ClassName Win32_QuickFixEngineering

Ta klasa zwraca listę poprawek, które wyglądają następująco:

Source Description     HotFixID  InstalledBy   InstalledOn PSComputerName
------ -----------     --------  -----------   ----------- --------------
       Security Update KB4048951 Administrator 12/16/2017  .

Aby uzyskać bardziej zwięzłe dane wyjściowe, możesz wykluczyć niektóre właściwości. Mimo że można użyć parametru Właściwości parametru Get-CimInstance, aby wybrać tylko parametr HotFixID, spowoduje to zwrócenie większej ilości informacji, ponieważ wszystkie metadane są wyświetlane domyślnie:

Get-CimInstance -ClassName Win32_QuickFixEngineering -Property HotFixID
InstalledOn           :
Caption               :
Description           :
InstallDate           :
Name                  :
Status                :
CSName                :
FixComments           :
HotFixID              : KB4533002
InstalledBy           :
ServicePackInEffect   :
PSComputerName        :
CimClass              : root/cimv2:Win32_QuickFixEngineering
CimInstanceProperties : {Caption, Description, InstallDate, Name…}
CimSystemProperties   : Microsoft.Management.Infrastructure.CimSystemProperties
...

Zwracane są dodatkowe dane, ponieważ parametr Property w parametrze Get-CimInstance ogranicza właściwości zwracane z wystąpień klas WMI, a nie obiektu zwróconego do programu PowerShell. Aby zmniejszyć dane wyjściowe, użyj polecenia Select-Object:

Get-CimInstance -ClassName Win32_QuickFixEngineering -Property HotFixId |
    Select-Object -Property HotFixId
HotFixId
--------
KB4048951

Wyświetlanie informacji o wersji systemu operacyjnego

Właściwości klasy Win32_OperatingSystem obejmują informacje o wersji i dodatku Service Pack. Możesz jawnie wybrać tylko te właściwości, aby uzyskać podsumowanie informacji o wersji z Win32_OperatingSystem:

Get-CimInstance -ClassName Win32_OperatingSystem |
  Select-Object -Property BuildNumber,BuildType,OSType,ServicePackMajorVersion,ServicePackMinorVersion

Można również użyć symboli wieloznacznych z parametrem Property . Ponieważ wszystkie właściwości rozpoczynające się od kompilacji lub pakietu ServicePack są ważne w tym miejscu, możemy skrócić go do następującego formularza:

Get-CimInstance -ClassName Win32_OperatingSystem |
    Select-Object -Property Build*,OSType,ServicePack*
BuildNumber             : 18362
BuildType               : Multiprocessor Free
OSType                  : 18
ServicePackMajorVersion : 0
ServicePackMinorVersion : 0

Wyświetlanie listy lokalnych użytkowników i właściciela

Ogólne informacje o użytkownikach lokalnych można znaleźć z wyborem właściwości Win32_OperatingSystem klasy. Możesz jawnie wybrać właściwości, które mają być wyświetlane w następujący sposób:

Get-CimInstance -ClassName Win32_OperatingSystem |
    Select-Object -Property NumberOfLicensedUsers, NumberOfUsers, RegisteredUser

Bardziej zwięzła wersja używająca symboli wieloznacznych to:

Get-CimInstance -ClassName Win32_OperatingSystem | Select-Object -Property *user*

Uzyskiwanie dostępnego miejsca na dysku

Aby wyświetlić miejsce na dysku i wolne miejsce dla dysków lokalnych, możesz użyć klasy Win32_LogicalDisk . Musisz zobaczyć tylko wystąpienia z wartością DriveType 3. Wartość WMI jest używana dla stałych dysków twardych.

Get-CimInstance -ClassName Win32_LogicalDisk -Filter "DriveType=3"
DeviceID DriveType ProviderName VolumeName Size         FreeSpace   PSComputerName
-------- --------- ------------ ---------- ----         ---------   --------------
C:       3                      Local Disk 203912880128 65541357568 .
Q:       3                      New Volume 122934034432 44298250240 .
Get-CimInstance -ClassName Win32_LogicalDisk -Filter "DriveType=3" |
    Measure-Object -Property FreeSpace,Size -Sum |
    Select-Object -Property Property,Sum
Property           Sum
--------           ---
FreeSpace 109839607808
Size      326846914560

Uzyskiwanie informacji o sesji logowania

Ogólne informacje o sesjach logowania skojarzonych z użytkownikami można uzyskać za pośrednictwem klasy Win32_LogonSession WMI:

Get-CimInstance -ClassName Win32_LogonSession

Logowanie użytkownika na komputerze

Możesz wyświetlić zalogowanego użytkownika do określonego systemu komputerowego przy użyciu Win32_ComputerSystem. To polecenie zwraca tylko użytkownika zalogowanego na pulpicie systemowym:

Get-CimInstance -ClassName Win32_ComputerSystem -Property UserName

Pobieranie czasu lokalnego z komputera

Bieżący czas lokalny można pobrać na określonym komputerze przy użyciu klasy Win32_LocalTime WMI.

Get-CimInstance -ClassName Win32_LocalTime
Day            : 23
DayOfWeek      : 1
Hour           : 8
Milliseconds   :
Minute         : 52
Month          : 12
Quarter        : 4
Second         : 55
WeekInMonth    : 4
Year           : 2019
PSComputerName :

Wyświetlanie stanu usługi

Aby wyświetlić stan wszystkich usług na określonym komputerze, możesz użyć polecenia cmdlet lokalnego Get-Service . W przypadku systemów zdalnych można użyć klasy Win32_Service WMI. Jeśli używasz Select-Object również do filtrowania wyników na Status, Name i DisplayName, format danych wyjściowych jest prawie identyczny z tym z :Get-Service

Get-CimInstance -ClassName Win32_Service |
    Select-Object -Property Status,Name,DisplayName

Aby zezwolić na pełne wyświetlanie nazw usług z długimi nazwami, użyj parametrów AutoSize i Wrap .Format-Table Te parametry optymalizują szerokość kolumny i umożliwiają zawijanie długich nazw zamiast obcinania:

Get-CimInstance -ClassName Win32_Service |
    Format-Table -Property Status, Name, DisplayName -AutoSize -Wrap