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 Get-Counter
parametrar för att ange en eller flera datorer, visa en lista över prestandaräknare och de instanser som de innehåller, ange exempelintervallen och ange det maximala antalet exempel. Utan parametrar hämtar Get-Counter
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.
Not
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. Använd kommandot Get-Counter -ListSet
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 prover från en räknare varje sekund. Om du vill stoppa kommandot trycker du på CTRL+C. 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 för \Processor\% Processor Time
.
Parametern Continuous anger att du vill 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. Objekten CounterSet skickas nedåt i pipelinen.
Sort-Object
använder parametern Property 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 kör Start-Job
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 \LogicalDisk(C:)\Disk Reads/sec
-räknarsökvägen. Variabeln $DiskReads
skickas ned i pipelinen till Get-Counter
.
Counter ä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 filen Servers.txt
. Fjärrdatornamnen lagras i variabeln $Servers
. Sökvägen för räknaren \Processor(*)\% Processor Time
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 Path 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. Om du vill hitta en fullständig lista över räknarsökvägar tar du bort pipelinen (|
) och kommandot Where-Object
.
$_
ä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-Counter
använder parametern ListSet för att ange räknaruppsättningen Minne. 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*
. Asteriskerna (*
) fungerar som jokertecken för vilka tecken som helst.
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äknaren 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 Minne räknaruppsättning.
$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
använder parametern ListSet för att ange räknaruppsättningen Minne. 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
. Parametern Property använder asterisken (*
) som ett 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 för 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 \Process(*)\% Processor Time
-räknaren för alla processer på den lokala datorn. Resultatet lagras i variabeln $Procs
. Variabeln $Procs
med egenskapen CounterSamples skickar PerformanceCounterSample objekt i pipelinen.
Sort-Object
använder parametern Property för att sortera objekten efter CookedValue i fallande ordning.
Format-Table
använder parametern Property 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ärranslutna datornamn. 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 som en ListSet- som innehåller kolumnen MachineName anger en punkt (.
) den lokala datorn.
Get-Counter
använder inte PowerShell-fjärrstyrning. Du kan använda parametern ComputerName även om datorn inte är konfigurerad för att köra fjärrkommandon.
Typ: | String[] |
Alias: | Cn |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-Continuous
När Kontinuerlig har angetts hämtar Get-Counter
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.
Typ: | SwitchParameter |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | 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 strängar för motverkande sökvägar ner 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
Den \\ComputerName
är valfri i en prestandaräknarväg. Om räknarsökvägen inte innehåller datornamnet använder Get-Counter
den lokala datorn.
En asterisk (*
) i instansen är ett jokertecken för att hämta alla instanser av räknaren.
Typ: | String[] |
Position: | 0 |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | True |
Godkänn jokertecken: | 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.
För att få en räknaruppsättning med formaterade räknarsökvägar, använd 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.
Om du till exempel vill skicka varje räknarsökväg för processor till Get-Counter
:
Get-Counter -ListSet Processor | Get-Counter
Not
I PowerShell 7 kan Get-Counter
inte hämta egenskapen Description för räknaruppsättningen.
Description är inställt på $null
.
Typ: | String[] |
Position: | 0 |
Standardvärde: | None |
Obligatorisk: | True |
Godkänn pipeline-indata: | True |
Godkänn jokertecken: | True |
-MaxSamples
Anger antalet exempel som ska hämtas från varje angiven prestandaräknare. Om du vill hämta en konstant ström med exempel använder du parametern Kontinuerlig.
Om MaxSamples parametern inte har angetts får Get-Counter
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 about_Jobs.
Typ: | Int64 |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-SampleInterval
Anger antalet sekunder mellan exemplen för varje angiven prestandaräknare. Om parametern SampleInterval inte anges använder Get-Counter
ett intervall på en sekund.
Typ: | Int32 |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
Indata
String[]
Get-Counter
accepterar pipelineindata för räknarsökvägar och räknaruppsättningsnamn.
Utdata
Med parametern ListSet returnerar den här cmdleten CounterSet- objekt.
Som standard och med parametern Counter returnerar den här cmdleten PerformanceCounterSampleSet-objekt.
Kommentarer
Om inga parametrar anges får Get-Counter
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 ListSet i PowerShell 7 kan Get-Counter
inte hämta egenskapen Description för räknaruppsättningen.
Description är inställt på $null
.