Sdílet prostřednictvím


Get-Counter

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

Syntax

Get-Counter
   [[-Counter] <string[]>]
   [-SampleInterval <int>]
   [-MaxSamples <long>]
   [-Continuous]
   [-ComputerName <String[]>]
   [<CommonParameters>]
Get-Counter
   [-ListSet] <String[]>
   [-ComputerName <String[]>]
   [<CommonParameters>]

Description

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

Pomocí parametrů můžete Get-Counter určit jeden nebo více počítačů, vypsat sady čítačů výkonu a instance, které obsahují, nastavit intervaly vzorků a zadat maximální počet vzorků. Bez parametrů Get-Counter získá data čítačů výkonu 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 .

Příklady

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

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

Příklad 2: Zadejte SampleInterval a MaxSamples.

Tento příklad získá data čítače pro všechny procesory v místním počítači. Data se shromažďují ve dvousekundových intervalech, dokud nejsou k dispozici 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žije parametr Counter k určení cesty \Processor(_Total)\% Processor Timečítače . Parametr SampleInterval nastaví dvousekundový interval pro kontrolu čítače. MaxSamples určuje, že tři je maximální počet opakování kontroly čítače.

Příklad 3: Získání průběžných vzorků čítače

Tento příklad získává průběžné vzorky pro čítač každou sekundu. Příkaz zastavíte stisknutím klávesy CTRL+C. Pokud chcete určit delší interval mezi ukázkami, 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-Counterk určení čítače \Processor\% Processor Time použije parametr Counter. Parametr Continuous určuje, že se mají vzorky získávat každou sekundu, dokud se příkaz nezastaví klávesou CTRL+C.

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

Tento příklad používá kanál k získání seznamu čítačů a následnému seřazení seznamu v abecedním pořadí.

Get-Counter -ListSet * | Sort-Object -Property CounterSetName | Format-Table -AutoSize

CounterSetName                        MachineName CounterSetType  Description
--------------                        ----------- --------------  -----------
.NET CLR Data                         .           SingleInstance  .Net CLR Data
.NET Data Provider for SqlServer      .           SingleInstance  Counters for System.Data.SqlClient
AppV Client Streamed Data Percentage  .           SingleInstance  Size of data streamed to disk ...
Authorization Manager Applications    .           SingleInstance  The set of Counters for ...
BitLocker                             .           MultiInstance   BitLocker Drive Encryption ...
Bluetooth Device                      .           SingleInstance  Counters related to a remote ...
Cache                                 .           SingleInstance  The Cache performance object ...
Client Side Caching                   .           SingleInstance  Performance counters for SMB ...

Get-Counter Pomocí parametru ListSet s hvězdičkou (*) získáte úplný seznam sad čítačů. Objekty CounterSet se odesílají do kanálu. Sort-Object používá parametr Property k určení, že objekty jsou seřazeny podle CounterSetName. Objekty se posílají do kanálu .Format-Table Parametr AutoSize upravuje šíř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-JobGet-Counter spustí příkaz 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-Jobke spuštění Get-Counter příkazu použije parametr ScriptBlock. Get-Counter použije parametr Counter k určení cesty \LogicalDisk(_Total)\% Free Spacečítače . Parametr MaxSamples určuje, že se má získat 1 000 vzorků čítače.

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

Tento příklad používá proměnnou k získání dat čítačů 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 se odešle do kanálu .Get-Counter Čítač je parametr první pozice a přijímá cestu uloženou v $DiskReads. ComputerName určuje dva počítače a MaxSamples určuje, aby se z každého počítače získalo 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 čítače výkonu na 50 náhodných vzdálených počítačích v podniku. Parametr ComputerName používá náhodné názvy počítačů uložené v proměnné. Pokud chcete aktualizovat názvy počítačů v proměnné, vytvořte proměnnou znovu.

Alternativou pro názvy serverů v parametru ComputerName je použití textového souboru. Pří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ý z 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 souboruServers.txt . Názvy vzdálených počítačů jsou uloženy $Servers v proměnné. Cesta \Processor(*)\% Processor Time k čítači je uložená v $Counter proměnné. Get-Counter použije parametr Counter k určení čítačů v $Counter proměnné. Parametr ComputerName určuje názvy počítačů v $Servers proměnné.

Příklad 8: Použití vlastnosti Path 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á spolu s rutinou Where-Object k vyhledání podmnožině názvů cest. Pokud chcete najít úplný seznam cest k čítačům, odeberte kanál (|) a Where-Object příkaz.

The $_ je automatická proměnná pro aktuální objekt v kanálu. Další informace najdete v tématu 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 k určení sady čítačů paměti . Příkaz je uzavřený v závorkách, takže vlastnost Paths vrátí každou cestu jako řetězec. Objekty se posílají do kanálu .Where-Object Where-Object použije proměnnou $_ ke zpracování každého objektu a použije parametr like k vyhledání shod pro řetězec *Cache*. Hvězdičky (*) jsou zástupné znaky pro všechny znaky.

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

Tento příklad získá formá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 závorkách, takže PathWithInstances vlastnost vrátí každou instanci cesty jako řetězec.

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

V tomto příkladu se pro každý čítač výkonu v sadě čítačů paměti místního počítače vrátí 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 k určení sady čítačů paměti . Příkaz je uzavřený v závorkách, takže vlastnost Paths vrátí každou cestu jako řetězec. Cesty jsou uloženy v $MemCounters proměnné. Get-Counter použije parametr Counter k určení cest čítače v $MemCounters proměnné.

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

Hodnoty vlastností v objektu PerformanceCounterSample představují každou ukázku dat. V tomto příkladu použijeme vlastnosti objektu CounterSamples ke zkoumá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 k čítači je uložená $Counter v proměnné. Get-Counter získá jeden vzorek hodnot čítače a uloží výsledky do $Data proměnné. Proměnná $Data používá vlastnost CounterSamples k získání vlastností objektu. Objekt se odešle do kanálu .Format-List Parametr Property používá k výběru všech vlastností zástupný znak hvězdičky (*).

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.

Pokud chcete zobrazit jednotlivé ukázky čí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žije parametr Counter k určení čítače \Processor(*)\% Processor Time. Hodnoty jsou uloženy v $Counter proměnné. $Counter.CounterSamples[0] zobrazí hodnotu pole pro první hodnotu čítače.

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

Tento příklad najde čas procesoru používaný jednotlivými procesory v místním počítači. Vlastnost CounterSamples slouží k porovnání dat čítače se zadanou hodnotou.

Pokud chcete zobrazit jednotlivé ukázky čí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žije parametr Counter k určení čítače \Processor(*)\% Processor Time. Hodnoty jsou uloženy v $Counter proměnné. Objekty uložené v $Counter.CounterSamples se odesílají kanálem. Where-Object používá blok skriptu k porovnání hodnot jednotlivých objektů se zadanou hodnotou 20. Je $_.CookedValue proměnná pro aktuální objekt v kanálu. Zobrazí se čítače s hodnotou CookedValue , která 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 využí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 používá parametr Čítač k určení čítače \Process(*)\% Processor Time pro všechny procesy v místním počítači. Výsledek se uloží do $Procs proměnné . Proměnná $Procs s vlastností CounterSamples odesílá objekty PerformanceCounterSample do kanálu. Sort-Object pomocí parametru Property seřadí objekty podle CookedValue v sestupném pořadí. Format-Table pomocí parametru Property vybere sloupce pro výstup. Parametr AutoSize upravuje šířky sloupců tak, aby se minimalizovalo zkrácení.

Parametry

-ComputerName

Určuje jeden název počítače nebo pole názvů vzdálených počítačů oddělené čárkami. 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, jako je ListSet obsahující sloupec MachineName , označuje tečka (.) místní počítač.

Get-Counter nespoléhá na vzdálené komunikace PowerShellu. Parametr ComputerName můžete použít i v případě, že váš počítač není nakonfigurovaný ke spouštění vzdálených příkazů.

Type:String[]
Aliases:Cn
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Continuous

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

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Counter

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

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

\\ComputerName\CounterSet(Instance)\CounterName

\CounterSet(Instance)\CounterName

Příklad:

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

\Processor(*)\% User Time

V \\ComputerName cestě k čítači výkonu je volitelný. Pokud cesta k čítači 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.

Type:String[]
Position:0
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:True

-ListSet

Seznamy čítače výkonu na počítačích. Pomocí hvězdičky (*) zadejte všechny sady čítačů. Zadejte jeden název nebo řetězec oddělený čárkami názvů sady čítačů. Názvy čítačů můžete posílat dolů kanálem.

Pokud chcete získat čítače, naformátované cesty čítačů, použijte parametr ListSet . Vlastnosti Paths a PathsWithInstances každé sady čítačů obsahují jednotlivé cesty k čítačům formátované jako řetězec.

Můžete uložit řetězce cesty k čítači do proměnné nebo použít kanál k odeslání řetězce do jiného Get-Counter příkazu.

Například k odeslání cesty k jednotlivým čítačům procesoru do Get-Counter:

Get-Counter -ListSet Processor | Get-Counter

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters: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 konstantní proud ukázek, použijte parametr Průběžné .

Pokud parametr MaxSamples není zadaný, 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 Informace o úlohách.

Type:Long
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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 se interval s jednou sekundou.

Type:Int
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Vstupy

String[]

Get-Counter přijímá vstup kanálu pro cesty čítače a názvy sady čítačů.

Výstupy

Microsoft.PowerShell.Commands.GetCounter.CounterSet, Microsoft.PowerShell.Commands.GetCounter.PerformanceCounterSampleSet, Microsoft.PowerShell.Commands.GetCounter.PerformanceCounterSample

Pokud chcete zobrazit vlastnosti objektu, odešlete výstup v kanálu do Get-Member. Výstupem jsou následující typy objektů:

Parametr ListSet : Microsoft.PowerShell.Commands.GetCounter.CounterSet

Parametr čítače : Microsoft.PowerShell.Commands.GetCounter.PerformanceCounterSampleSet

Vlastnost CounterSamples: Microsoft.PowerShell.Commands.GetCounter.PerformanceCounterSample

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á mezi vzorky interval s jednou sekundou. Pomocí parametru SampleInterval interval zvětšete.

Hodnoty MaxSamples a SampleInterval platí pro všechny čítače v 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.