Get-Counter
Pobiera dane licznika wydajności z komputerów lokalnych i zdalnych.
Składnia
Get-Counter
[[-Counter] <String[]>]
[-SampleInterval <Int32>]
[-MaxSamples <Int64>]
[-Continuous]
[-ComputerName <String[]>]
[<CommonParameters>]
Get-Counter
[-ListSet] <String[]>
[-ComputerName <String[]>]
[<CommonParameters>]
Opis
To polecenie cmdlet jest dostępne tylko na platformie Windows.
Polecenie Get-Counter
cmdlet pobiera dane licznika wydajności bezpośrednio z instrumentacji monitorowania wydajności w rodzinie systemów operacyjnych Windows. Get-Counter
pobiera dane wydajności z komputera lokalnego lub komputerów zdalnych.
Można użyć Get-Counter
parametrów, aby określić co najmniej jeden komputer, wyświetlić listę zestawów liczników wydajności i wystąpienia, które zawierają, ustawić przykładowe interwały i określić maksymalną liczbę próbek. Bez parametrów Get-Counter
pobiera dane liczników wydajności dla zestawu liczników systemowych.
Wiele zestawów liczników jest chronionych przez listy kontroli dostępu (ACL). Aby wyświetlić wszystkie zestawy liczników, otwórz program PowerShell z opcją Uruchom jako administrator .
To polecenie cmdlet zostało ponownie wprowadzone w programie PowerShell 7.
Uwaga
Nazwy liczników wydajności są zlokalizowane. Przedstawione tutaj przykłady używają angielskich nazw obiektów wydajności, liczników i wystąpień. Nazwy będą inne w systemie, który używa innego języka. Get-Counter -ListSet
Użyj polecenia , aby wyświetlić zlokalizowane nazwy.
Przykłady
Przykład 1. Pobieranie listy zestawów liczników
Ten przykład pobiera listę zestawów liczników komputera lokalnego.
Get-Counter -ListSet *
CounterSetName : Processor
MachineName : .
CounterSetType : MultiInstance
Description : The Processor performance object consists of counters that measure aspects ...
computer that performs arithmetic and logical computations, initiates ...
computer can have multiple processors. The processor object represents ...
Paths : {\Processor(*)\% Processor Time, \Processor(*)\% User Time, ...
PathsWithInstances : {\Processor(0)\% Processor Time, \Processor(1)\% Processor Time, ...
Counter : {\Processor(*)\% Processor Time, \Processor(*)\% User Time, ...
Get-Counter
używa parametru ListSet z gwiazdką (*
), aby uzyskać listę zestawów liczników.
Kropka (.
) w kolumnie MachineName reprezentuje komputer lokalny.
Przykład 2. Określanie przykładówInterval i MaxSamples
Te przykłady pobierają dane licznika dla wszystkich procesorów na komputerze lokalnym. Dane są zbierane w dwóch sekundach, dopóki nie będą dostępne trzy próbki.
Get-Counter -Counter "\Processor(_Total)\% Processor Time" -SampleInterval 2 -MaxSamples 3
Timestamp CounterSamples
--------- --------------
6/18/2019 14:39:56 \\Computer01\processor(_total)\% processor time :
20.7144271584086
6/18/2019 14:39:58 \\Computer01\processor(_total)\% processor time :
10.4391790575511
6/18/2019 14:40:01 \\Computer01\processor(_total)\% processor time :
37.5968799396998
Get-Counter
używa parametru Counter , aby określić ścieżkę \Processor(_Total)\% Processor Time
licznika . Parametr SampleInterval ustawia dwusekundowy interwał, aby sprawdzić licznik. MaxSamples określa, że trzy jest maksymalną liczbą prób sprawdzenia licznika.
Przykład 3. Pobieranie ciągłych próbek licznika
Te przykłady pobierają ciągłe próbki dla licznika co sekundę. Aby zatrzymać polecenie, naciśnij klawisze CTRL+C. Aby określić dłuższy interwał między próbkami, użyj parametru SampleInterval .
Get-Counter -Counter "\Processor(_Total)\% Processor Time" -Continuous
Timestamp CounterSamples
--------- --------------
6/19/2019 15:35:03 \\Computer01\processor(_total)\% processor time :
43.8522842937022
6/19/2019 15:35:04 \\Computer01\processor(_total)\% processor time :
29.7896844697383
6/19/2019 15:35:05 \\Computer01\processor(_total)\% processor time :
29.4962645638135
6/19/2019 15:35:06 \\Computer01\processor(_total)\% processor time :
25.5901500127408
Get-Counter
używa parametru Counter , aby określić \Processor\% Processor Time
licznik.
Parametr Continuous określa, aby pobrać przykłady co sekundę, dopóki polecenie nie zostanie zatrzymane za pomocą kombinacji klawiszy CTRL+C.
Przykład 4. Alfabetyczna lista zestawów liczników
W tym przykładzie użyto potoku do pobrania zestawu listy liczników, a następnie posortowania listy w kolejności alfabetycznej.
Get-Counter -ListSet * |
Sort-Object -Property CounterSetName |
Format-Table CounterSetName, CounterSetType -AutoSize
CounterSetName CounterSetType
-------------- --------------
.NET CLR Data SingleInstance
.NET Data Provider for SqlServer SingleInstance
AppV Client Streamed Data Percentage SingleInstance
Authorization Manager Applications SingleInstance
BitLocker MultiInstance
Bluetooth Device SingleInstance
Cache SingleInstance
Client Side Caching SingleInstance
Get-Counter
Używa parametru ListSet z gwiazdką (*
), aby uzyskać pełną listę zestawów liczników. Obiekty CounterSet są wysyłane w dół potoku. Sort-Object
używa parametru Property , aby określić, że obiekty są sortowane według CounterSetName. Obiekty są wysyłane w dół potoku do Format-Table
elementu . Parametr AutoSize dostosowuje szerokość kolumny, aby zminimalizować obcinanie.
Kropka (.
) w kolumnie MachineName reprezentuje komputer lokalny.
Przykład 5. Uruchamianie zadania w tle w celu pobrania danych licznika
W tym przykładzie Start-Job
uruchamia Get-Counter
polecenie jako zadanie w tle na komputerze lokalnym.
Aby wyświetlić dane wyjściowe licznika wydajności z zadania, użyj Receive-Job
polecenia cmdlet .
Start-Job -ScriptBlock {Get-Counter -Counter "\LogicalDisk(_Total)\% Free Space" -MaxSamples 1000}
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
1 Job1 BackgroundJob Running True localhost Get-Counter -Counter
Start-Job
używa parametru ScriptBlock do uruchomienia Get-Counter
polecenia. Get-Counter
używa parametru Counter , aby określić ścieżkę \LogicalDisk(_Total)\% Free Space
licznika . Parametr MaxSamples określa, aby pobrać 1000 próbek licznika.
Przykład 6. Pobieranie danych licznika z wielu komputerów
W tym przykładzie użyto zmiennej w celu uzyskania danych licznika wydajności z dwóch komputerów.
$DiskReads = "\LogicalDisk(C:)\Disk Reads/sec"
$DiskReads | Get-Counter -ComputerName Server01, Server02 -MaxSamples 10
Timestamp CounterSamples
--------- --------------
6/21/2019 10:51:04 \\Server01\logicaldisk(c:)\disk reads/sec :
0
\\Server02\logicaldisk(c:)\disk reads/sec :
0.983050344269146
Zmienna $DiskReads
przechowuje ścieżkę licznika \LogicalDisk(C:)\Disk Reads/sec
. Zmienna $DiskReads
jest wysyłana w dół potoku do .Get-Counter
Licznik jest pierwszym parametrem pozycji i akceptuje ścieżkę przechowywaną w $DiskReads
pliku . Nazwa_komputera określa dwa komputery i MaxSamples określa, aby pobrać 10 przykładów z każdego komputera.
Przykład 7. Pobieranie wartości wystąpienia licznika z wielu losowych komputerów
Ten przykład pobiera wartość licznika wydajności na 50 losowych, zdalnych komputerach w przedsiębiorstwie. Parametr ComputerName używa losowych nazw komputerów przechowywanych w zmiennej. Aby zaktualizować nazwy komputerów w zmiennej, utwórz ponownie zmienną.
Alternatywą dla nazw serwerów w parametrze ComputerName jest użycie pliku tekstowego. Na przykład:
-ComputerName (Get-Random (Get-Content -Path C:\Servers.txt) -Count 50)
Ścieżka licznika zawiera gwiazdkę (*
) w nazwie wystąpienia w celu pobrania danych dla każdego procesora komputera zdalnego.
$Servers = Get-Random (Get-Content -Path C:\Servers.txt) -Count 50
$Counter = "\Processor(*)\% Processor Time"
Get-Counter -Counter $Counter -ComputerName $Servers
Timestamp CounterSamples
--------- --------------
6/20/2019 12:20:35 \\Server01\processor(0)\% processor time :
6.52610319637854
\\Server01\processor(1)\% processor time :
3.41030663625782
\\Server01\processor(2)\% processor time :
9.64189975649925
\\Server01\processor(3)\% processor time :
1.85240835619747
\\Server01\processor(_total)\% processor time :
5.35768447160776
Polecenie Get-Random
cmdlet używa Get-Content
polecenia do wybierania 50 losowych nazw komputerów z Servers.txt
pliku. Nazwy komputerów zdalnych są przechowywane w zmiennej $Servers
. Ścieżka \Processor(*)\% Processor Time
licznika jest przechowywana w zmiennej $Counter
. Get-Counter
używa parametru Counter , aby określić liczniki w zmiennej $Counter
. Parametr ComputerName określa nazwy komputerów w zmiennej $Servers
.
Przykład 8. Uzyskiwanie sformatowanych nazw ścieżek za pomocą właściwości Path
W tym przykładzie użyto właściwości Path zestawu liczników w celu znalezienia sformatowanych nazw ścieżek dla liczników wydajności.
Potok jest używany z poleceniem Where-Object
cmdlet w celu znalezienia podzestawu nazw ścieżek. Aby znaleźć zestaw liczników pełną listę ścieżek liczników, usuń potok (|
) i Where-Object
polecenie.
Jest $_
to zmienna automatyczna dla bieżącego obiektu w potoku.
Aby uzyskać więcej informacji, zobacz about_Automatic_Variables.
(Get-Counter -ListSet Memory).Paths | Where-Object { $_ -like "*Cache*" }
\Memory\Cache Faults/sec
\Memory\Cache Bytes
\Memory\Cache Bytes Peak
\Memory\System Cache Resident Bytes
\Memory\Standby Cache Reserve Bytes
\Memory\Standby Cache Normal Priority Bytes
\Memory\Standby Cache Core Bytes
\Memory\Long-Term Average Standby Cache Lifetime (s)
Get-Counter
używa parametru ListSet , aby określić zestaw liczników pamięci . Polecenie jest ujęte w nawiasy, aby właściwość Path zwracała każdą ścieżkę jako ciąg. Obiekty są wysyłane w dół potoku do Where-Object
elementu . Where-Object
używa zmiennej $_
do przetwarzania każdego obiektu i używa -like
operatora do znajdowania dopasowań dla ciągu *Cache*
. Gwiazdki (*
) są symbolami wieloznacznymi dla dowolnych znaków.
Przykład 9. Użyj właściwości PathWithInstances, aby uzyskać nazwy ścieżek sformatowanych
Ten przykład pobiera sformatowane nazwy ścieżek, które zawierają wystąpienia liczników wydajności PhysicalDisk .
(Get-Counter -ListSet PhysicalDisk).PathsWithInstances
\PhysicalDisk(0 C:)\Current Disk Queue Length
\PhysicalDisk(_Total)\Current Disk Queue Length
\PhysicalDisk(0 C:)\% Disk Time
\PhysicalDisk(_Total)\% Disk Time
\PhysicalDisk(0 C:)\Avg. Disk Queue Length
\PhysicalDisk(_Total)\Avg. Disk Queue Length
\PhysicalDisk(0 C:)\% Disk Read Time
\PhysicalDisk(_Total)\% Disk Read Time
Get-Counter
używa parametru ListSet , aby określić zestaw liczników PhysicalDisk . Polecenie jest ujęte w nawiasy, aby właściwość PathWithInstances zwracało każde wystąpienie ścieżki jako ciąg.
Przykład 10: Pobieranie pojedynczej wartości dla każdego licznika w zestawie liczników
W tym przykładzie pojedyncza wartość jest zwracana dla każdego licznika wydajności w zestawie licznika pamięci komputera lokalnego.
$MemCounters = (Get-Counter -ListSet Memory).Paths
Get-Counter -Counter $MemCounters
Timestamp CounterSamples
--------- --------------
6/19/2019 12:05:00 \\Computer01\memory\page faults/sec :
868.772077545597
\\Computer01\memory\available bytes :
9031176192
\\Computer01\memory\committed bytes :
8242982912
\\Computer01\memory\commit limit :
19603333120
Get-Counter
używa parametru ListSet , aby określić zestaw liczników pamięci . Polecenie jest ujęte w nawiasy, aby właściwość Path zwracała każdą ścieżkę jako ciąg. Ścieżki są przechowywane w zmiennej $MemCounters
. Get-Counter
używa parametru Counter , aby określić ścieżki licznika w zmiennej $MemCounters
.
Przykład 11: Wyświetlanie wartości właściwości obiektu
Wartości właściwości w obiekcie PerformanceCounterSample reprezentują poszczególne próbki danych. W tym przykładzie używamy właściwości obiektu CounterSamples do badania, wybierania, sortowania i grupowania danych.
$Counter = "\\Server01\Process(Idle)\% Processor Time"
$Data = Get-Counter $Counter
$Data.CounterSamples | Format-List -Property *
Path : \\Server01\process(idle)\% processor time
InstanceName : idle
CookedValue : 198.467899571389
RawValue : 14329160321003
SecondValue : 128606459528326201
MultipleCount : 1
CounterType : Timer100Ns
Timestamp : 6/19/2019 12:20:49
Timestamp100NSec : 128606207528320000
Status : 0
DefaultScale : 0
TimeBase : 10000000
Ścieżka licznika jest przechowywana w zmiennej $Counter
. Get-Counter
Pobiera jedną próbkę wartości licznika i przechowuje wyniki w zmiennej $Data
. Zmienna $Data
używa właściwości CounterSamples , aby uzyskać właściwości obiektu. Obiekt jest wysyłany w dół potoku do Format-List
. Parametr Property używa symbolu wieloznakowego gwiazdki (*
), aby wybrać wszystkie właściwości.
Przykład 12. Wartości tablicy licznika wydajności
W tym przykładzie zmienna przechowuje każdy licznik wydajności. Właściwość CounterSamples to tablica, która może wyświetlać określone wartości liczników.
Aby wyświetlić każdy przykład licznika, użyj polecenia $Counter.CounterSamples
.
$Counter = Get-Counter -Counter "\Processor(*)\% Processor Time"
$Counter.CounterSamples[0]
Path InstanceName CookedValue
---- ------------ -----------
\\Computer01\processor(0)\% processor time 0 1.33997091699662
Get-Counter
używa parametru Counter , aby określić licznik \Processor(*)\% Processor Time
. Wartości są przechowywane w zmiennej $Counter
.
$Counter.CounterSamples[0]
wyświetla wartość tablicy dla pierwszej wartości licznika.
Przykład 13. Porównanie wartości licznika wydajności
W tym przykładzie znaleziono ilość czasu procesora używanego przez każdy procesor na komputerze lokalnym. Właściwość CounterSamples służy do porównywania danych licznika z określoną wartością.
Aby wyświetlić każdy przykład licznika, użyj polecenia $Counter.CounterSamples
.
$Counter = Get-Counter -Counter "\Processor(*)\% Processor Time"
$Counter.CounterSamples | Where-Object { $_.CookedValue -lt "20" }
Path InstanceName CookedValue
---- ------------ -----------
\\Computer01\processor(0)\% processor time 0 12.6398025240208
\\Computer01\processor(1)\% processor time 1 15.7598095767344
Get-Counter
używa parametru Counter , aby określić licznik \Processor(*)\% Processor Time
. Wartości są przechowywane w zmiennej $Counter
. Obiekty przechowywane w obiekcie $Counter.CounterSamples
są wysyłane w dół potoku. Where-Object
używa bloku skryptu do porównywania każdej wartości obiektów z określoną wartością 20
. Jest $_.CookedValue
to zmienna dla bieżącego obiektu w potoku. Wyświetlane są liczniki z wartością CookedValue mniejszą niż 20.
Przykład 14. Sortowanie danych licznika wydajności
W tym przykładzie pokazano, jak sortować dane licznika wydajności. W przykładzie znajdują się procesy na komputerze, na których jest używany najwięcej czasu procesora w próbce.
$Procs = Get-Counter -Counter "\Process(*)\% Processor Time"
$Procs.CounterSamples | Sort-Object -Property CookedValue -Descending |
Format-Table -Property Path, InstanceName, CookedValue -AutoSize
Path InstanceName CookedValue
---- ------------ -----------
\\Computer01\process(_total)\% processor time _total 395.464129650573
\\Computer01\process(idle)\% processor time idle 389.356575524695
\\Computer01\process(mssense)\% processor time mssense 3.05377706293879
\\Computer01\process(csrss#1)\% processor time csrss 1.52688853146939
\\Computer01\process(microsoftedgecp#10)\% processor time microsoftedgecp 1.52688853146939
\\Computer01\process(runtimebroker#5)\% processor time runtimebroker 0
\\Computer01\process(settingsynchost)\% processor time settingsynchost 0
\\Computer01\process(microsoftedgecp#16)\% processor time microsoftedgecp 0
Get-Counter
używa parametru Counter , aby określić \Process(*)\% Processor Time
licznik dla wszystkich procesów na komputerze lokalnym. Wynik jest przechowywany w zmiennej $Procs
. Zmienna $Procs
z właściwością CounterSamples wysyła obiekty PerformanceCounterSample w dół potoku. Sort-Object
Używa parametru Property do sortowania obiektów według CookedValue w kolejności malejącej. Format-Table
używa parametru Property , aby wybrać kolumny dla danych wyjściowych. Parametr AutoSize dostosowuje szerokość kolumny, aby zminimalizować obcinanie.
Parametry
-ComputerName
Określa jedną nazwę komputera lub rozdzielaną przecinkami tablicę nazw komputerów zdalnych. Użyj nazwy NetBIOS, adresu IP lub w pełni kwalifikowanej nazwy domeny komputera.
Aby uzyskać dane licznika wydajności z komputera lokalnego, wyklucz parametr ComputerName.
W przypadku danych wyjściowych, takich jak ListSet , które zawierają kolumnę MachineName , kropka (.
) wskazuje komputer lokalny.
Get-Counter
nie polega na komunikacji zdalnej programu PowerShell. Można użyć parametru ComputerName , nawet jeśli komputer nie jest skonfigurowany do uruchamiania poleceń zdalnych.
Type: | String[] |
Aliases: | Cn |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Continuous
Po określeniu parametru Get-Counter
Continuous pobiera próbki do momentu naciśnięcia klawisza CTRL+C. Próbki są uzyskiwane co sekundę dla każdego określonego licznika wydajności. Użyj parametru SampleInterval , aby zwiększyć interwał między próbkami ciągłymi.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Counter
Określa ścieżkę do co najmniej jednej ścieżki licznika. Ścieżki są wprowadzane jako tablica rozdzielona przecinkami, zmienna lub wartości z pliku tekstowego. Ciągi ścieżki licznika można wysyłać w dół potoku do adresu Get-Counter
.
Ścieżki liczników używają następującej składni:
\\ComputerName\CounterSet(Instance)\CounterName
\CounterSet(Instance)\CounterName
Na przykład:
\\Server01\Processor(*)\% User Time
\Processor(*)\% User Time
Element \\ComputerName
jest opcjonalny w ścieżce licznika wydajności. Jeśli ścieżka licznika nie zawiera nazwy komputera, Get-Counter
użyj komputera lokalnego.
Gwiazdka (*
) w wystąpieniu to symbol wieloznaczny umożliwiający pobranie wszystkich wystąpień licznika.
Type: | String[] |
Position: | 0 |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | True |
-ListSet
Wyświetla listę zestawów liczników wydajności na komputerach. Użyj gwiazdki (*
), aby określić wszystkie zestawy liczników. Wprowadź jedną nazwę lub ciąg rozdzielony przecinkami nazw zestawów liczników. Nazwy zestawów liczników można wysyłać w dół potoku.
Aby uzyskać zestawy liczników sformatowane ścieżki liczników, użyj parametru ListSet . Właściwości Ścieżki i ścieżkiWithInstances każdego zestawu liczników zawierają poszczególne ścieżki liczników sformatowane jako ciąg.
Ciągi ścieżki licznika można zapisać w zmiennej lub użyć potoku, aby wysłać ciąg do innego Get-Counter
polecenia.
Na przykład, aby wysłać każdą ścieżkę licznika procesora do :Get-Counter
Get-Counter -ListSet Processor | Get-Counter
Uwaga
W programie PowerShell 7 Get-Counter
nie można pobrać właściwości Description zestawu liczników. Opis jest ustawiony na $null
wartość .
Type: | String[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | True |
-MaxSamples
Określa liczbę próbek do pobrania z każdego określonego licznika wydajności. Aby uzyskać stały strumień przykładów, użyj parametru Continuous .
Jeśli parametr MaxSamples nie jest określony, Get-Counter
pobiera tylko jedną próbkę dla każdego określonego licznika.
Aby zebrać duży zestaw danych, uruchom Get-Counter
polecenie jako zadanie w tle programu PowerShell. Aby uzyskać więcej informacji, zobacz opis polecenia about_Jobs.
Type: | Int64 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SampleInterval
Określa liczbę sekund między próbkami dla każdego określonego licznika wydajności. Jeśli parametr SampleInterval nie jest określony, Get-Counter
używa interwału jednosekundowego.
Type: | Int32 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Dane wejściowe
String[]
Get-Counter
akceptuje dane wejściowe potoku dla ścieżek liczników i nazw zestawów liczników.
Dane wyjściowe
Za pomocą parametru ListSet to polecenie cmdlet zwraca obiekty CounterSet.
Domyślnie i przy użyciu parametru Counter to polecenie cmdlet zwraca obiekty PerformanceCounterSampleSet .
Uwagi
Jeśli nie określono żadnych parametrów, Get-Counter
pobiera jedną próbkę dla każdego określonego licznika wydajności. Użyj parametrów MaxSamples i Continuous, aby uzyskać więcej przykładów.
Get-Counter
używa jednosekundowego interwału między próbkami. Użyj parametru SampleInterval , aby zwiększyć interwał.
Wartości MaxSamples i SampleInterval mają zastosowanie do wszystkich liczników na każdym komputerze w poleceniu . Aby ustawić różne wartości dla różnych liczników, wprowadź oddzielne Get-Counter
polecenia.
W programie PowerShell 7 podczas korzystania z parametru Get-Counter
ListSet nie można pobrać właściwości Description zestawu liczników. Opis jest ustawiony na $null
wartość .