Sdílet prostřednictvím


Get-Counter

Získá data čítače výkonu z místních a vzdálených počítačů.

Syntaxe

Get-Counter
   [[-Counter] <String[]>]
   [-SampleInterval <Int32>]
   [-MaxSamples <Int64>]
   [-Continuous]
   [-ComputerName <String[]>]
   [<CommonParameters>]
Get-Counter
   [-ListSet] <String[]>
   [-ComputerName <String[]>]
   [<CommonParameters>]

Description

Tato rutina je dostupná jenom na platformě Windows.

Cmdlet Get-Counter získává data čítače výkonu přímo z instrumentace monitorování výkonu v operačních systémech rodiny Windows. Get-Counter získá údaje o výkonu z místního počítače nebo ze vzdálených počítačů.

Parametry Get-Counter můžete použít k určení jednoho nebo více počítačů, výpis sad čítačů výkonu a instancí, které obsahují, nastavení intervalů vzorku a určení maximálního počtu vzorků. Bez parametrů Get-Counter získává data výkonnostního čítače pro sadu systémových čítačů.

Mnoho sad čítačů je chráněno seznamy řízení přístupu (ACL). Pokud chcete zobrazit všechny sady čítačů, otevřete PowerShell s možností Spustit jako správce.

Tato cmdlet byla znovu zavedena v PowerShellu 7.

Poznámka

Názvy čítačů výkonu jsou lokalizované. Zde uvedené příklady používají anglické názvy objektů výkonu, čítačů a instancí. Názvy se budou lišit v systému, který používá jiný jazyk. Pomocí příkazu Get-Counter -ListSet zobrazte lokalizované názvy.

Příklady

Příklad 1: Získání seznamu sady čítačů

Tento příklad získá seznam skupin čítačů místního počítače.

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 k získání seznamu sad čítačů používá parametr ListSet s hvězdičkou (*). Tečka (.) ve sloupci MachineName představuje místní počítač.

Příklad 2: Určení parametru SampleInterval a MaxSamples

Tento příklad získá data z čítače pro všechny procesory v místním počítači. Data se shromažďují v dvousekundových intervalech, dokud nebudou tři vzorky.

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 používá parametr čítače k určení cesty čítače \Processor(_Total)\% Processor Time. Parametr SampleInterval nastaví dvousekundový interval pro kontrolu čítače. MaxSamples určuje, že maximální počet kontrol čítače je tři.

Příklad 3: Získání kontinuálních vzorků čítače

Tento příklad sbírá průběžné vzorky pro čítač každou sekundu. Pokud chcete příkaz zastavit, stiskněte CTRL+C. Pokud chcete zadat delší interval mezi vzorky, použijte parametr 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 k určení čítače používá parametr \Processor\% Processor Time. Parametr Continuous určuje, že se mají vzorky získávat každou sekundu, dokud se příkaz nezastaví pomocí CTRL+C.

Příklad 4: Abecední seznam sad čítačů

Tento příklad používá pipeline k získání seznamu čítačů a poté seřazuje seznam podle abecedy.

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 pomocí parametru ListSet s hvězdičkou (*) získáte úplný seznam sad čítačů. Objekty CounterSet se odesílají do potrubí. Sort-Object používá parametr vlastnosti k určení, že objekty jsou seřazeny podle CounterSetName. Objekty se odesílají do kanálu Format-Table. Parametr AutoSize upraví šířky sloupců tak, aby se minimalizovalo zkrácení.

Tečka (.) ve sloupci MachineName představuje místní počítač.

Příklad 5: Spuštění úlohy na pozadí pro získání dat čítačů

V tomto příkladu Start-Job spustí příkaz Get-Counter jako úlohu na pozadí na místním počítači. Pokud chcete zobrazit výstup čítače výkonu z úlohy, použijte rutinu 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 ke spuštění příkazu používá Get-Counter ScriptBlock. Get-Counter používá parametr čítače k určení cesty čítače \LogicalDisk(_Total)\% Free Space. Parametr MaxSamples určuje získání 1000 vzorků čítače.

Příklad 6: Získání dat čítačů z více počítačů

Tento příklad používá proměnnou k získání dat čítače výkonu ze dvou počítačů.

$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

Proměnná $DiskReads ukládá cestu čítače \LogicalDisk(C:)\Disk Reads/sec. Proměnná $DiskReads je odeslána přes kanál k Get-Counter. Čítač je první parametr pozice a přijímá cestu uloženou v $DiskReads. ComputerName určuje dva počítače a MaxSamples určuje, že se z každého počítače získá 10 vzorků.

Příklad 7: Získání hodnot instancí čítače z více náhodných počítačů

Tento příklad získá hodnotu ukazatele výkonu na 50 náhodných vzdálených počítačích v organizaci. Parametr ComputerName používá náhodné názvy počítačů uložené v proměnné. Chcete-li aktualizovat názvy počítačů v proměnné, znovu vytvořte proměnnou.

Alternativou pro názvy serverů v parametru ComputerName je použití textového souboru. Například:

-ComputerName (Get-Random (Get-Content -Path C:\Servers.txt) -Count 50)

Cesta čítače obsahuje hvězdičku (*) v názvu instance pro získání dat pro každý procesor vzdáleného počítače.

$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

Rutina Get-Random používá Get-Content k výběru 50 náhodných názvů počítačů ze souboru Servers.txt. Názvy vzdálených počítačů jsou uloženy v proměnné $Servers. Cesta čítače \Processor(*)\% Processor Time je uložená v proměnné $Counter. Get-Counter používá parametr čítače k určení čítačů v proměnné $Counter. Parametr ComputerName určuje názvy počítačů v proměnné $Servers.

Příklad 8: Použití vlastnosti Cesta k získání formátovaných názvů cest

Tento příklad používá vlastnost Path sady čítačů k vyhledání formátovaných názvů cest pro čítače výkonu.

Kanál se používá s rutinou Where-Object k vyhledání podmnožiny názvů cest. Pokud chcete najít úplný seznam cest čítačů, odeberte kanál (|) a Where-Object příkaz.

$_ je automatická proměnná pro aktuální objekt v kanálu. Další informace naleznete v části 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 používá parametr ListSet ke specifikaci sady čítačů paměti . Příkaz je uzavřen v závorkách, aby vlastnost Cesty vracela každou cestu jako řetězec. Objekty se odesílají do kanálu Where-Object. Where-Object používá proměnnou $_ ke zpracování každého objektu a pomocí operátoru -like vyhledá shody pro řetězec *Cache*. Hvězdičky (*) jsou zástupné znaky pro všechny znaky.

Příklad 9: Získání formátovaných názvů cest pomocí vlastnosti PathsWithInstances

Tento příklad získá zformátované názvy cest, které obsahují instance pro čítače výkonu 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 používá parametr ListSet k určení sady čítačů PhysicalDisk. Příkaz je uzavřený v kulatých závorkách, aby vlastnost PathsWithInstances vrátila každou instanci cesty jako textový řetězec.

Příklad 10: Získání jedné hodnoty pro každý čítač v sadě čítačů

V tomto příkladu je pro každý čítač výkonu v sadě čítačů paměti místního počítače vrácena jedna hodnota.

$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 používá parametr ListSet ke specifikaci sady čítačů paměti . Příkaz je uzavřen v závorkách, aby vlastnost Cesty vracela každou cestu jako řetězec. Cesty jsou uloženy v proměnné $MemCounters. Get-Counter používá parametr Counter k určení cest čítačů v proměnné $MemCounters.

Příklad 11: Zobrazení hodnot vlastností objektu

Hodnoty vlastností v objektu PerformanceCounterSample představují každou ukázku dat. V tomto příkladu používáme vlastnosti CounterSamples objekt k prozkoumání, výběru, řazení a seskupení dat.

$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

Cesta čítače je uložena v proměnné $Counter. Get-Counter získá jeden vzorek hodnot čítače a uloží výsledky do proměnné $Data. Proměnná $Data používá vlastnost CounterSamples k získání vlastností objektu. Objekt je odeslán potrubím do Format-List. Parametr Vlastnost používá zástupný znak hvězdičky (*) k výběru všech vlastností.

Příklad 12: Hodnoty pole čítačů výkonu

V tomto příkladu proměnná ukládá každý čítač výkonu. Vlastnost CounterSamples je pole, které může zobrazit konkrétní hodnoty čítače.

Chcete-li zobrazit jednotlivé vzorky čítačů, použijte $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 používá parametr čítače k určení čítače \Processor(*)\% Processor Time. Hodnoty jsou uloženy v proměnné $Counter. $Counter.CounterSamples[0] zobrazuje hodnotu pole pro první hodnotu počitadla.

Příklad 13: Porovnání hodnot čítačů výkonu

Tento příklad najde množství času procesoru používaného každým procesorem v místním počítači. Vlastnost CounterSamples slouží k porovnání dat čítače se zadanou hodnotou.

Chcete-li zobrazit jednotlivé vzorky čítačů, použijte $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 používá parametr čítače k určení čítače \Processor(*)\% Processor Time. Hodnoty jsou uloženy v proměnné $Counter. Objekty uložené v $Counter.CounterSamples se odesílají do potrubí. Where-Object používá blok skriptu k porovnání jednotlivých objektů s zadanou hodnotou 20. $_.CookedValue je proměnná pro aktuální objekt v kanálu. Zobrazí se čítače, jejichž CookedValue je menší než 20.

Příklad 14: Řazení dat čítače výkonu

Tento příklad ukazuje, jak seřadit data čítače výkonu. Příklad najde procesy v počítači, které během vzorku používají nejvíce času procesoru.

$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 pomocí parametru Counter určuje čítač \Process(*)\% Processor Time pro všechny procesy v místním počítači. Výsledek se uloží do proměnné $Procs. Proměnná $Procs s vlastností CounterSamples odešle objekty PerformanceCounterSample dolů kanálem. Sort-Object pomocí parametru vlastnost seřadí objekty podle CookedValue v pořadí Sestupně. Format-Table pomocí parametru Vlastnost vybere sloupce výstupu. Parametr AutoSize upraví šířky sloupců tak, aby se minimalizovalo zkrácení.

Parametry

-ComputerName

Určuje jeden název počítače nebo pole oddělené čárkami vzdálených názvů počítačů. Použijte název NetBIOS, IP adresu nebo plně kvalifikovaný název domény počítače.

Pokud chcete získat data čítače výkonu z místního počítače, vylučte parametr ComputerName. Pro výstup, například ListSet, který obsahuje sloupec MachineName, označuje místní počítač tečka (.).

Get-Counter nespoléhá na PowerShell remoting. Parametr ComputerName můžete použít i v případě, že váš počítač není nakonfigurovaný tak, aby spouštět vzdálené příkazy.

Typ:String[]
Aliasy:Cn
Position:Named
Default value:None
Vyžadováno:False
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

-Continuous

Pokud je zadán nepřetržitý, Get-Counter dostane vzorky, dokud nestisknete CTRL+C. Vzorky se získávají každou sekundu pro každý zadaný čítač výkonu. Pomocí parametru SampleInterval zvyšte interval mezi průběžnými vzorky.

Typ:SwitchParameter
Position:Named
Default value:None
Vyžadováno:False
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

-Counter

Určuje cestu k jedné nebo více cestám čítače. Cesty jsou zadávány jako pole hodnot oddělené čárkami, proměnná nebo hodnoty z textového souboru. Řetězce cesty čítače můžete odeslat kanálem k Get-Counter.

Cesty čítačů používají následující syntaxi:

\\ComputerName\CounterSet(Instance)\CounterName

\CounterSet(Instance)\CounterName

Například:

\\Server01\Processor(*)\% User Time

\Processor(*)\% User Time

V cestě čítače výkonu je \\ComputerName nepovinný. Pokud cesta čítače neobsahuje název počítače, Get-Counter použije místní počítač.

Hvězdička (*) v instanci je zástupný znak pro získání všech instancí čítače.

Typ:String[]
Position:0
Default value:None
Vyžadováno:False
Přijmout vstup kanálu:True
Přijmout zástupné znaky:True

-ListSet

Zobrazí seznam sad čítačů výkonu v počítačích. K určení všech sad čítačů použijte hvězdičku (*). Zadejte jeden název nebo řetězec sady čítačů oddělený čárkami. Názvy sady čítačů můžete odeslat v kanálu.

Chcete-li získat formátované cesty pro sady čítačů, použijte parametr ListSet. Cesty a PathsWithInstances jako vlastnosti každé sady čítačů obsahují jednotlivé cesty čítačů formátované jako řetězec.

Řetězce cesty čítače můžete uložit do proměnné nebo pomocí potrubí odeslat řetězec do jiného příkazu Get-Counter.

Pokud například chcete odeslat každou cestu čítače procesoruGet-Counter:

Get-Counter -ListSet Processor | Get-Counter

Poznámka

V PowerShellu 7 Get-Counter nemůže načíst vlastnost Popis sady čítačů. Popis je nastaven na $null.

Typ:String[]
Position:0
Default value:None
Vyžadováno:True
Přijmout vstup kanálu:True
Přijmout zástupné znaky:True

-MaxSamples

Určuje počet vzorků, které se mají získat z každého zadaného čítače výkonu. Pokud chcete získat nepřetržitý proud ukázek, použijte parametr Nepřetržitý.

Pokud není zadaný parametr MaxSamples, Get-Counter získá pouze jeden vzorek pro každý zadaný čítač.

Pokud chcete shromáždit velkou sadu dat, spusťte Get-Counter jako úlohu PowerShellu na pozadí. Další informace najdete v tématu about_Jobs.

Typ:Int64
Position:Named
Default value:None
Vyžadováno:False
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

-SampleInterval

Určuje počet sekund mezi vzorky pro každý zadaný čítač výkonu. Pokud parametr SampleInterval není zadaný, Get-Counter použije interval o jednu sekundu.

Typ:Int32
Position:Named
Default value:None
Vyžadováno:False
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

Vstupy

String[]

Get-Counter přijímá vstup z datového toku pro cesty počitadla a názvy sad počitadla.

Výstupy

CounterSet

S parametrem ListSet vrátí tato rutina CounterSet objekty.

PerformanceCounterSampleSet

Ve výchozím nastavení a s parametrem Counter vrátí tato rutina PerformanceCounterSampleSet objekty.

Poznámky

Pokud nejsou zadány žádné parametry, Get-Counter získá jeden vzorek pro každý zadaný čítač výkonu. Další ukázky získáte pomocí parametrů MaxSamples a Continuous.

Get-Counter používá jednosekundový interval mezi vzorky. Ke zvýšení intervalu použijte parametr SampleInterval.

Hodnoty MaxSamples a SampleInterval platí pro všechny čítače na každém počítači v příkazu. Pokud chcete nastavit různé hodnoty pro různé čítače, zadejte samostatné Get-Counter příkazy.

Pokud v PowerShellu 7 používáte parametr ListSet, Get-Counter nemůže načíst vlastnost Popis u sady čítačů. Popis je nastaven na $null.