Get-Counter

Hämtar prestandaräknardata från lokala datorer och fjärrdatorer.

Syntax

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

Description

Den här cmdleten är endast tillgänglig på Windows-plattformen.

Cmdleten Get-Counter hämtar prestandaräknardata direkt från instrumentationen för prestandaövervakning i Windows-serien med operativsystem. Get-Counter hämtar prestandadata från en lokal dator eller fjärrdatorer.

Du kan använda parametrarna Get-Counter för att ange en eller flera datorer, visa en lista över prestandaräknaruppsättningar och de instanser som de innehåller, ange exempelintervallen och ange det maximala antalet exempel. Utan parametrar Get-Counter hämtar du prestandaräknardata för en uppsättning systemräknare.

Många räknaruppsättningar skyddas av åtkomstkontrollistor (ACL). Om du vill se alla räknaruppsättningar öppnar du PowerShell med alternativet Kör som administratör .

Den här cmdleten återinfördes i PowerShell 7.

Kommentar

Namn på prestandaräknare lokaliseras. Exemplen som visas här använder de engelska namnen på prestandaobjekt, räknare och instanser. Namnen kommer att vara olika i ett system som använder ett annat språk. Get-Counter -ListSet Använd kommandot för att se de lokaliserade namnen.

Exempel

Exempel 1: Hämta listan med räknaruppsättningar

Det här exemplet hämtar den lokala datorns lista över räknaruppsättningar.

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 använder parametern ListSet med en asterisk (*) för att hämta listan över räknaruppsättningar. Punkten (.) i kolumnen MachineName representerar den lokala datorn.

Exempel 2: Ange SampleInterval och MaxSamples

I det här exemplet hämtas räknardata för alla processorer på den lokala datorn. Data samlas in med två sekunders intervall tills det finns tre exempel.

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 använder parametern Counter för att ange räknarsökvägen \Processor(_Total)\% Processor Time. Parametern SampleInterval anger ett intervall på två sekunder för att kontrollera räknaren. MaxSamples avgör att tre är det maximala antalet gånger för att kontrollera räknaren.

Exempel 3: Hämta kontinuerliga exempel på en räknare

Det här exemplet hämtar kontinuerliga exempel för en räknare varje sekund. Tryck på CTRL+C om du vill stoppa kommandot. Om du vill ange ett längre intervall mellan exempel använder du parametern 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 använder parametern Counter för att ange räknaren \Processor\% Processor Time . Parametern Kontinuerlig anger att du ska hämta exempel varje sekund tills kommandot stoppas med CTRL+C.

Exempel 4: Alfabetisk lista över räknaruppsättningar

I det här exemplet används pipelinen för att hämta räknarlistans uppsättning och sedan sortera listan i alfabetisk ordning.

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 använder parametern ListSet med en asterisk (*) för att hämta en fullständig lista över räknaruppsättningar. CounterSet-objekten skickas ned i pipelinen. Sort-Objectanvänder egenskapsparametern för att ange att objekten sorteras efter CounterSetName. Objekten skickas ned i pipelinen till Format-Table. Parametern AutoSize justerar kolumnbredderna för att minimera trunkeringen.

Punkten (.) i kolumnen MachineName representerar den lokala datorn.

Exempel 5: Kör ett bakgrundsjobb för att hämta räknardata

I det här exemplet Start-Job kör du ett Get-Counter kommando som ett bakgrundsjobb på den lokala datorn. Om du vill visa prestandaräknarens utdata från jobbet använder du cmdleten 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 använder parametern ScriptBlock för att köra ett Get-Counter kommando. Get-Counter använder parametern Counter för att ange räknarsökvägen \LogicalDisk(_Total)\% Free Space. Parametern MaxSamples anger att 1 000 exempel av räknaren ska hämtas.

Exempel 6: Hämta räknardata från flera datorer

I det här exemplet används en variabel för att hämta prestandaräknardata från två datorer.

$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

Variabeln $DiskReads lagrar räknarsökvägen \LogicalDisk(C:)\Disk Reads/sec . Variabeln $DiskReads skickas ned i pipelinen till Get-Counter. Räknaren är den första positionsparametern och accepterar sökvägen som lagras i $DiskReads. ComputerName anger de två datorerna och MaxSamples anger att 10 exempel ska hämtas från varje dator.

Exempel 7: Hämta en räknares instansvärden från flera slumpmässiga datorer

Det här exemplet hämtar värdet för en prestandaräknare på 50 slumpmässiga fjärrdatorer i företaget. Parametern ComputerName använder slumpmässiga datornamn som lagras i en variabel. Om du vill uppdatera datornamnen i variabeln återskapar du variabeln.

Ett alternativ för servernamnen i parametern ComputerName är att använda en textfil. Till exempel:

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

Räknarsökvägen innehåller en asterisk (*) i instansnamnet för att hämta data för var och en av fjärrdatorns processorer.

$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

Cmdleten Get-Random använder Get-Content för att välja 50 slumpmässiga datornamn från Servers.txt filen. Fjärrdatornamnen lagras i variabeln $Servers . Räknarens \Processor(*)\% Processor Time sökväg lagras i variabeln $Counter . Get-Counter använder parametern Counter för att ange räknarna i variabeln $Counter . Parametern ComputerName anger datornamnen i variabeln $Servers .

Exempel 8: Använd egenskapen Path för att hämta formaterade sökvägsnamn

I det här exemplet används egenskapen Sökväg för en räknaruppsättning för att hitta de formaterade sökvägsnamnen för prestandaräknarna.

Pipelinen används med cmdleten Where-Object för att hitta en delmängd av sökvägsnamnen. Ta bort pipelinen (|) och Where-Object kommandot för att hitta en fullständig lista över räknarsökvägar för räknaruppsättningar.

$_ är en automatisk variabel för det aktuella objektet i pipelinen. Mer information finns i 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-Counteranvänder parametern ListSet för att ange minnesräknaren. Kommandot omges av parenteser så att egenskapen Paths returnerar varje sökväg som en sträng. Objekten skickas ned i pipelinen till Where-Object. Where-Object använder variabeln $_ för att bearbeta varje objekt och använder operatorn -like för att hitta matchningar för strängen *Cache*. Asterisker (*) är jokertecken för alla tecken.

Exempel 9: Använd egenskapen PathsWithInstances för att hämta formaterade sökvägsnamn

Det här exemplet hämtar de formaterade sökvägsnamnen som innehåller instanserna för Prestandaräknare för 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 använder parametern ListSet för att ange räknaruppsättningen PhysicalDisk . Kommandot omges av parenteser så att egenskapen PathsWithInstances returnerar varje sökvägsinstans som en sträng.

Exempel 10: Hämta ett enda värde för varje räknare i en räknaruppsättning

I det här exemplet returneras ett enda värde för varje prestandaräknare i den lokala datorns minnesräknare .

$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-Counteranvänder parametern ListSet för att ange minnesräknaren. Kommandot omges av parenteser så att egenskapen Paths returnerar varje sökväg som en sträng. Sökvägarna lagras i variabeln $MemCounters . Get-Counter använder parametern Counter för att ange räknarsökvägarna i variabeln $MemCounters .

Exempel 11: Visa ett objekts egenskapsvärden

Egenskapsvärdena i PerformanceCounterSample-objektet representerar varje dataexempel. I det här exemplet använder vi egenskaperna för objektet CounterSamples för att undersöka, välja, sortera och gruppera data.

$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

Räknarsökvägen lagras i variabeln $Counter . Get-Counter hämtar ett exempel på räknarvärdena och lagrar resultatet i variabeln $Data . Variabeln $Data använder egenskapen CounterSamples för att hämta objektets egenskaper. Objektet skickas ned i pipelinen till Format-List. Egenskapsparametern använder ett asterisk* () jokertecken för att välja alla egenskaper.

Exempel 12: Matrisvärden för prestandaräknare

I det här exemplet lagrar en variabel varje prestandaräknare. Egenskapen CounterSamples är en matris som kan visa specifika räknarvärden.

Om du vill visa varje räknarexempel använder du $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 använder parametern Counter för att ange räknaren \Processor(*)\% Processor Time. Värdena lagras i variabeln $Counter . $Counter.CounterSamples[0] visar matrisvärdet för det första räknarvärdet.

Exempel 13: Jämför prestandaräknarvärden

I det här exemplet hittar du den mängd processortid som används av varje processor på den lokala datorn. Egenskapen CounterSamples används för att jämföra räknardata med ett angivet värde.

Om du vill visa varje räknarexempel använder du $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 använder parametern Counter för att ange räknaren \Processor(*)\% Processor Time. Värdena lagras i variabeln $Counter . Objekten som lagras i $Counter.CounterSamples skickas ned i pipelinen. Where-Object använder ett skriptblock för att jämföra varje objektvärde med ett angivet värde på 20. $_.CookedValue är en variabel för det aktuella objektet i pipelinen. Räknare med en CookedValue som är mindre än 20 visas.

Exempel 14: Sortera prestandaräknardata

Det här exemplet visar hur du sorterar prestandaräknardata. I exemplet hittas de processer på datorn som använder mest processortid under exemplet.

$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 använder parametern Counter för att ange räknaren \Process(*)\% Processor Time för alla processer på den lokala datorn. Resultatet lagras i variabeln $Procs . Variabeln $Procs med egenskapen CounterSamples skickar PerformanceCounterSample-objekten nedåt i pipelinen. Sort-Object använder parametern Egenskap för att sortera objekten efter CookedValue i fallande ordning. Format-Table använder parametern Egenskap för att välja kolumnerna för utdata. Parametern AutoSize justerar kolumnbredderna för att minimera trunkeringen.

Parametrar

-ComputerName

Anger ett datornamn eller en kommaavgränsad matris med fjärrdatornamn . Använd NetBIOS-namnet, en IP-adress eller datorns fullständigt kvalificerade domännamn.

Om du vill hämta prestandaräknardata från den lokala datorn undantar du parametern ComputerName . För utdata, till exempel en ListSet som innehåller kolumnen MachineName , anger en punkt (.) den lokala datorn.

Get-Counter förlitar sig inte på PowerShell-fjärrkommunikation. Du kan använda parametern ComputerName även om datorn inte är konfigurerad för att köra fjärrkommandon.

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

-Continuous

När Kontinuerlig har angetts Get-Counter hämtar du exempel tills du trycker på CTRL+C. Exempel hämtas varje sekund för varje angiven prestandaräknare. Använd parametern SampleInterval för att öka intervallet mellan kontinuerliga exempel.

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

-Counter

Anger sökvägen till en eller flera räknarsökvägar. Sökvägar är indata som en kommaavgränsad matris, en variabel eller värden från en textfil. Du kan skicka räknarsökvägssträngar nedåt i pipelinen till Get-Counter.

Räknarsökvägar använder följande syntax:

\\ComputerName\CounterSet(Instance)\CounterName

\CounterSet(Instance)\CounterName

Till exempel:

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

\Processor(*)\% User Time

\\ComputerName Är valfritt i en prestandaräknares sökväg. Om räknarsökvägen inte innehåller datornamnet Get-Counter använder du den lokala datorn.

En asterisk (*) i instansen är ett jokertecken för att hämta alla instanser av räknaren.

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

-ListSet

Visar en lista över prestandaräknare på datorerna. Använd en asterisk (*) för att ange alla räknaruppsättningar. Ange ett namn eller en kommaavgränsad sträng med räknaruppsättningsnamn. Du kan skicka räknaruppsättningsnamn nedåt i pipelinen.

Om du vill hämta en räknaruppsättningar med formaterade räknarsökvägar använder du parametern ListSet . Egenskaperna Paths och PathsWithInstances för varje räknaruppsättning innehåller de enskilda räknarsökvägarna som är formaterade som en sträng.

Du kan spara räknarsökvägssträngarna i en variabel eller använda pipelinen för att skicka strängen till ett annat Get-Counter kommando.

Du kan till exempel skicka varje processorräknares sökväg till Get-Counter:

Get-Counter -ListSet Processor | Get-Counter

Kommentar

I PowerShell 7 Get-Counter kan du inte hämta egenskapen Description för räknaruppsättningen. Beskrivningen är inställd på $null.

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

-MaxSamples

Anger antalet exempel som ska hämtas från varje angiven prestandaräknare. Om du vill hämta en konstant dataström med exempel använder du parametern Kontinuerlig .

Om parametern MaxSamples inte har angettsGet-Counter hämtar bara ett exempel för varje angiven räknare.

Om du vill samla in en stor datamängd kör du Get-Counter som ett PowerShell-bakgrundsjobb. Mer information finns i artikeln om jobb.

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

-SampleInterval

Anger antalet sekunder mellan exemplen för varje angiven prestandaräknare. Om parametern SampleInterval inte har angetts Get-Counter använder du ett intervall på en sekund.

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

Indata

String[]

Get-Counter accepterar pipelineindata för räknarsökvägar och räknaruppsättningsnamn.

Utdata

CounterSet

Med parametern ListSet returnerar den här cmdleten CounterSet-objekt .

PerformanceCounterSampleSet

Som standard och med parametern Counter returnerar den här cmdleten PerformanceCounterSampleSet-objekt.

Kommentarer

Om inga parametrar anges Get-Counter hämtar du ett exempel för varje angiven prestandaräknare. Använd parametrarna MaxSamples och Continuous för att hämta fler exempel.

Get-Counter använder ett intervall på en sekund mellan exemplen. Använd parametern SampleInterval för att öka intervallet.

Värdena MaxSamples och SampleInterval gäller för alla räknare på varje dator i kommandot. Ange olika värden för olika räknare genom att ange separata Get-Counter kommandon.

När du använder parametern Get-Counter ListSet i PowerShell 7 kan du inte hämta egenskapen Description för räknaruppsättningen. Beskrivningen är inställd på $null.