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 cmdlet Get-Counter
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ć parametrów Get-Counter
, 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 licznika 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.
Notatka
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. Użyj polecenia Get-Counter -ListSet
, aby wyświetlić zlokalizowane nazwy.
Przykłady
Przykład 1: Pobierz listę zestawu 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śl SampleInterval i MaxSamples
Ten przykład pobiera 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 licznika, aby określić ścieżkę licznika \Processor(_Total)\% Processor Time
. Parametr SampleInterval ustawia dwusekundowy interwał sprawdzania licznika.
MaxSamples określa, że trzy jest maksymalną liczbą prób sprawdzenia licznika.
Przykład 3. Pobieranie ciągłych próbek licznika
Ten przykład otrzymuje ciągłe próbki dla licznika co sekundę. Aby zatrzymać polecenie, naciśnij 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 licznika , aby określić licznik \Processor\% Processor Time
.
Parametr Continuous określa pobieranie próbek co sekundę, dopóki polecenie nie zostanie zatrzymane z CTRL+C.
Przykład 4. Alfabetyczna lista zestawów liczników
W tym przykładzie używa się potoku do otrzymania zestawu listy liczników, a następnie posortowania tej listy alfabetycznie.
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
. 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 polecenie Get-Counter
jako zadanie w tle na komputerze lokalnym.
Aby wyświetlić dane wyjściowe licznika wydajności z zadania, użyj polecenia cmdlet Receive-Job
.
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 polecenia Get-Counter
.
Get-Counter
używa parametru licznika, aby określić ścieżkę licznika \LogicalDisk(_Total)\% Free Space
. Parametr MaxSamples określa pobranie 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
.
Counter jest pierwszym parametrem pozycji i akceptuje ścieżkę przechowywaną w $DiskReads
.
ComputerName określa dwa komputery i MaxSamples określa pobieranie 10 próbek z każdego komputera.
Przykład 7. Pobieranie wartości wystąpienia licznika z kilku przypadkowo wybranych 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, co umożliwia pobranie 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 cmdlet Get-Random
używa Get-Content
do wybierania 50 losowych nazw komputerów z pliku Servers.txt
. Nazwy komputerów zdalnych są przechowywane w zmiennej $Servers
. Ścieżka licznika \Processor(*)\% Processor Time
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 Ścieżka zestawu liczników w celu znalezienia sformatowanych nazw ścieżek dla liczników wydajności.
Polecenie cmdlet Where-Object
jest używane w połączeniu z rurociągiem do znalezienia podzestawu nazw ścieżek. Aby znaleźć pełną listę ścieżek liczników, usuń potok (|
) i polecenie Where-Object
.
$_
jest zmienną automatyczną 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
.
Where-Object
używa $_
zmiennej do przetwarzania każdego obiektu i używa operatora -like
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 uzyskuje sformatowane nazwy ścieżek, które zawierają instancje liczników wydajności dla 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 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 jest zwracana pojedyncza wartość dla każdego licznika wydajności w 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 zapisuje 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 właściwości używa gwiazdki (*
) jako symbolu wieloznacznego, 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 jest tablicą, która może wyświetlać konkretne wartości liczników.
Aby wyświetlić każdą próbkę licznika, użyj $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 licznika , 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żdą próbkę licznika, użyj $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 licznika, aby określić licznik \Processor(*)\% Processor Time
. Wartości są przechowywane w zmiennej $Counter
. Obiekty przechowywane w $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
.
$_.CookedValue
jest zmienną używaną dla bieżącego obiektu w potoku. Wyświetlane są liczniki z CookedValue, które są mniejsze niż 20.
Przykład 14. Sortowanie danych licznika wydajności
W tym przykładzie pokazano, jak sortować dane licznika wydajności. Procesy na komputerze, które wykorzystują najwięcej czasu procesora podczas próbkowania, są odnajdywane w przykładzie.
$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ć licznik \Process(*)\% Processor Time
dla wszystkich procesów na komputerze lokalnym. Wynik jest przechowywany w zmiennej $Procs
. Obiekty PerformanceCounterSample są wysyłane wzdłuż potoku przez zmienną $Procs
z właściwością CounterSamples.
Sort-Object
używa parametru Właściwości do sortowania obiektów według CookedValue w malejącej kolejności .
Format-Table
używa parametru właściwości, 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ę zdalnych nazw komputerów. Użyj nazwy NetBIOS, adresu IP lub w pełni kwalifikowanej nazwy domeny komputera.
Aby uzyskać dane licznika wydajności z komputera lokalnego , należy wykluczyć parametr ComputerName.
W przypadku danych wyjściowych, takich jak ListSet, która zawiera 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.
Typ: | String[] |
Aliasy: | Cn |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-Continuous
Po określeniu opcji Continuous, Get-Counter
pobiera próbki do momentu naciśnięcia kombinacji klawiszy 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.
Typ: | SwitchParameter |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | 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 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
\\ComputerName
jest elementem opcjonalnym w ścieżce licznika wydajności. Jeśli ścieżka licznika nie zawiera nazwy komputera, Get-Counter
używa komputera lokalnego.
Gwiazdka (*
) w wystąpieniu to symbol wieloznaczny umożliwiający pobranie wszystkich wystąpień licznika.
Typ: | String[] |
Position: | 0 |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | True |
Akceptowanie symboli wieloznacznych: | 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ć zestaw liczników z sformatowanymi ścieżkami, użyj parametru ListSet. Ścieżki i ścieżki WithInstances właściwości każdego zestawu liczników zawierają poszczególne ścieżki liczników sformatowane jako ciąg.
Ciągi ścieżek liczników można zapisać w zmiennej lub użyć potoku danych, aby wysłać ciąg do innego polecenia Get-Counter
.
Na przykład, aby wysłać każdą ścieżkę licznika procesora do Get-Counter
:
Get-Counter -ListSet Processor | Get-Counter
Notatka
W programie PowerShell 7 Get-Counter
nie może pobrać właściwości Description zestawu liczników.
Opis jest ustawiony na wartość $null
.
Typ: | String[] |
Position: | 0 |
Domyślna wartość: | None |
Wymagane: | True |
Akceptowanie danych wejściowych potoku: | True |
Akceptowanie symboli wieloznacznych: | True |
-MaxSamples
Określa liczbę próbek do pobrania z każdego określonego licznika wydajności. Aby uzyskać stały strumień próbek, 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
jako zadanie w tle programu PowerShell. Aby uzyskać więcej informacji, zobacz about_Jobs.
Typ: | Int64 |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | 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.
Typ: | Int32 |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | 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
W przypadku parametru ListSet to polecenie cmdlet zwraca obiekty CounterSet.
Domyślnie, z parametrem Counter, 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. Aby uzyskać więcej próbek, użyj parametrów MaxSamples i Continuous.
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 ramach polecenia. Aby ustawić różne wartości dla różnych liczników, wprowadź oddzielne polecenia Get-Counter
.
W programie PowerShell 7 podczas korzystania z parametru ListSetGet-Counter
nie można pobrać właściwości Description zestawu liczników.
Opis jest ustawiony na $null
.