Get-Counter
Hiermee worden prestatiemeteritems opgehaald van lokale en externe computers.
Syntaxis
Get-Counter
[[-Counter] <String[]>]
[-SampleInterval <Int32>]
[-MaxSamples <Int64>]
[-Continuous]
[-ComputerName <String[]>]
[<CommonParameters>]
Get-Counter
[-ListSet] <String[]>
[-ComputerName <String[]>]
[<CommonParameters>]
Description
Deze cmdlet is alleen beschikbaar op het Windows-platform.
Met de Get-Counter
-cmdlet worden prestatiemeteritems rechtstreeks opgehaald uit de prestatiecontrole-instrumentatie in de Windows-serie van besturingssystemen.
Get-Counter
prestatiegegevens ophaalt van een lokale computer of externe computers.
U kunt de Get-Counter
parameters gebruiken om een of meer computers op te geven, de prestatiemeteritems en de exemplaren die ze bevatten, de voorbeeldintervallen in te stellen en het maximum aantal steekproeven op te geven. Zonder parameters krijgt Get-Counter
prestatiemeteritems voor een set systeemtellers.
Veel tellersets worden beveiligd door toegangsbeheerlijsten (ACL). Als u alle tellersets wilt zien, opent u PowerShell met de optie Als administrator uitvoeren.
Deze cmdlet is opnieuw geïntroduceerd in PowerShell 7.
Notitie
Namen van prestatiemeteritems worden gelokaliseerd. In de voorbeelden die hier worden weergegeven, worden de Engelse namen van de prestatieobjecten, tellers en exemplaren gebruikt. De namen verschillen in een systeem dat gebruikmaakt van een andere taal. Gebruik de opdracht Get-Counter -ListSet
om de gelokaliseerde namen weer te geven.
Voorbeelden
Voorbeeld 1: De lijst met tellersets ophalen
In dit voorbeeld wordt de lijst met tellersets van de lokale computer weergegeven.
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
gebruikt de parameter ListSet met een sterretje (*
) om de lijst met tellersets op te halen.
De punt (.
) in de kolom MachineName vertegenwoordigt de lokale computer.
Voorbeeld 2: De SampleInterval en MaxSamples opgeven
In deze voorbeelden worden de tellergegevens opgehaald voor alle processors op de lokale computer. Gegevens worden verzameld met tussenpozen van twee seconden totdat er drie monsters zijn.
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
gebruikt de parameter Teller om het pad naar de teller op te geven \Processor(_Total)\% Processor Time
. De parameter SampleInterval stelt een interval van twee seconden in om de teller te controleren.
MaxSamples bepaalt dat drie het maximum aantal keren is om de teller te controleren.
Voorbeeld 3: Doorlopende steekproeven van een teller ophalen
Deze voorbeelden verkrijgen elke seconde doorlopende metingen voor een teller. Als u de opdracht wilt stoppen, drukt u op Ctrl+C-. Als u een langer interval tussen voorbeelden wilt opgeven, gebruikt u de parameter 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
gebruikt de parameter Counter om de \Processor\% Processor Time
teller op te geven.
De parameter Continue geeft aan om elke seconde voorbeelden op te halen totdat de opdracht is gestopt met Ctrl-+C-.
Voorbeeld 4: Alfabetische lijst van tellersets
In dit voorbeeld wordt de pijplijn gebruikt om de tellerlijstset op te halen en vervolgens de lijst in alfabetische volgorde te sorteren.
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
gebruikt de parameter ListSet met een sterretje (*
) om een volledige lijst met tellersets op te halen. De CounterSet--objecten worden door de pijplijn overgedragen.
Sort-Object
gebruikt de parameter Eigenschap om op te geven dat de objecten worden gesorteerd op CounterSetName-. De objecten worden via de pijpleiding naar Format-Table
verzonden. Met de parameter AutoSize worden de kolombreedtes aangepast om afkapping te minimaliseren.
De punt (.
) in de kolom MachineName vertegenwoordigt de lokale computer.
Voorbeeld 5: Een achtergrondtaak uitvoeren om tellergegevens op te halen
In dit voorbeeld voert Start-Job
een Get-Counter
opdracht uit als achtergrondtaak op de lokale computer.
Gebruik de cmdlet Receive-Job
om de uitvoer van de prestatiemeteritems van de taak weer te geven.
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
gebruikt de parameter ScriptBlock om een Get-Counter
opdracht uit te voeren.
Get-Counter
gebruikt de parameter Teller om het pad naar de teller op te geven \LogicalDisk(_Total)\% Free Space
. De MaxSamples parameter geeft 1000 steekproeven van de teller op.
Voorbeeld 6: Tellergegevens ophalen van meerdere computers
In dit voorbeeld wordt een variabele gebruikt om prestatiemeteritemgegevens van twee computers op te halen.
$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
De variabele $DiskReads
slaat het tellerpad van \LogicalDisk(C:)\Disk Reads/sec
op. De variabele $DiskReads
wordt naar Get-Counter
verzonden.
Teller is de eerste positieparameter en accepteert het pad dat is opgeslagen in $DiskReads
.
ComputerName geeft de twee computers aan en MaxSamples geeft aan dat er 10 monster van elke computer moeten worden opgehaald.
Voorbeeld 7: De exemplaarwaarden van een teller ophalen van meerdere willekeurige computers
In dit voorbeeld wordt de waarde van een prestatiemeteritem opgehaald op 50 willekeurige, externe computers in de onderneming. De parameter ComputerName maakt gebruik van willekeurige computernamen die zijn opgeslagen in een variabele. Als u de computernamen in de variabele wilt bijwerken, maakt u de variabele opnieuw.
Een alternatief voor de servernamen in de parameter ComputerName is het gebruik van een tekstbestand. Bijvoorbeeld:
-ComputerName (Get-Random (Get-Content -Path C:\Servers.txt) -Count 50)
Het tellerpad bevat een sterretje (*
) in de naam van het exemplaar om de gegevens op te halen voor elke externe computerprocessor.
$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
De Get-Random
-cmdlet gebruikt Get-Content
om 50 willekeurige computernamen te selecteren in het Servers.txt
-bestand. De namen van de externe computers worden opgeslagen in de variabele $Servers
. Het pad van de \Processor(*)\% Processor Time
teller wordt opgeslagen in de $Counter
variabele.
Get-Counter
gebruikt de parameter Teller- om de tellers in de variabele $Counter
op te geven. De ComputerName parameter geeft de computernamen in de $Servers
variabele.
Voorbeeld 8: De eigenschap Pad gebruiken om opgemaakte padnamen op te halen
In dit voorbeeld wordt de eigenschap Path van een counterset gebruikt om de opgemaakte padnamen voor de prestatiecounters te vinden.
De pipeline wordt gebruikt met de Where-Object
cmdlet om een subset van de padnamen te vinden. Om een complete lijst van tellerpaden van een tellerset te vinden, dient u de pijplijn (|
) en de Where-Object
-opdracht te verwijderen.
De $_
is een automatische variabele voor het huidige object in de pijplijn.
Voor meer informatie, zie 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
gebruikt de parameter ListSet om de tellerset geheugen op te geven. De opdracht staat tussen haakjes, zodat de eigenschap Paden elk pad als tekenreeks retourneert. De objecten worden via de pijpleiding naar Where-Object
verzonden.
Where-Object
gebruikt de variabele $_
om elk object te verwerken en gebruikt de operator -like
om overeenkomsten te vinden voor de tekenreeks *Cache*
. De sterretjes (*
) zijn jokertekens voor alle tekens.
Voorbeeld 9: de eigenschap PathsWithInstances gebruiken om opgemaakte padnamen op te halen
In dit voorbeeld worden de geformatteerde padnamen opgehaald die de exemplaren voor de PhysicalDisk prestatiemeter bevatten.
(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
gebruikt de parameter ListSet om de PhysicalDisk tellerset op te geven. Het commando staat tussen haakjes, zodat de eigenschap PathsWithInstances elk padexemplaar als tekenreeks retourneert.
Voorbeeld 10: Eén waarde ophalen voor elke teller in een tellerset
In dit voorbeeld wordt één waarde geretourneerd voor elke prestatiemeter in de tellerset van de geheugen van de lokale computer .
$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
gebruikt de parameter ListSet om de tellerset geheugen op te geven. De opdracht staat tussen haakjes, zodat de eigenschap Paden elk pad als tekenreeks retourneert. De paden worden opgeslagen in de $MemCounters
variabele.
Get-Counter
gebruikt de parameter Teller om de tellerpaden op te geven in de variabele $MemCounters
.
Voorbeeld 11: De eigenschapswaarden van een object weergeven
De eigenschapswaarden in het PerformanceCounterSample--object vertegenwoordigen elk gegevensvoorbeeld. In dit voorbeeld gebruiken we de eigenschappen van de CounterSamples object om de gegevens te onderzoeken, te selecteren, te sorteren en te groeperen.
$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
Het tellerpad wordt opgeslagen in de $Counter
variabele.
Get-Counter
een voorbeeld van de tellerwaarden ophaalt en de resultaten opslaat in de $Data
variabele. De variabele $Data
maakt gebruik van de eigenschap CounterSamples om de eigenschappen van het object op te halen. Het object wordt via de pijpleiding naar Format-List
verzonden. Het eigenschapsparameter gebruikt een sterretje (*
) als wildcard om alle eigenschappen te selecteren.
Voorbeeld 12: Matrixwaarden prestatiemeteritem
In dit voorbeeld slaat een variabele elke prestatiemeteritem op. De eigenschap CounterSamples is een matrix die specifieke tellerwaarden kan weergeven.
Als u elk voorbeeld van een teller wilt weergeven, gebruikt u $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
gebruikt de parameter Counter om de teller \Processor(*)\% Processor Time
op te geven. De waarden worden opgeslagen in de $Counter
variabele.
$Counter.CounterSamples[0]
geeft de matrixwaarde voor de eerste tellerwaarde weer.
Voorbeeld 13: Waarden voor prestatiemeteritems vergelijken
In dit voorbeeld wordt de hoeveelheid processortijd gevonden die door elke processor op de lokale computer wordt gebruikt. De eigenschap CounterSamples wordt gebruikt om de tellergegevens te vergelijken met een opgegeven waarde.
Als u elk voorbeeld van een teller wilt weergeven, gebruikt u $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
gebruikt de parameter Counter om de teller \Processor(*)\% Processor Time
op te geven. De waarden worden opgeslagen in de $Counter
variabele. De objecten die zijn opgeslagen in $Counter.CounterSamples
worden door de pijplijn verzonden.
Where-Object
gebruikt een scriptblok om elke objectwaarde te vergelijken met een opgegeven waarde van 20
. De $_.CookedValue
is een variabele voor het huidige object in de pijplijn. Tellers met een CookedValue die kleiner is dan 20 worden weergegeven.
Voorbeeld 14: Prestatiemeteritems sorteren
In dit voorbeeld ziet u hoe u prestatiemeteritems sorteert. In het voorbeeld worden de processen op de computer gevonden die de meeste processortijd gebruiken tijdens het voorbeeld.
$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
gebruikt de parameter Teller om de \Process(*)\% Processor Time
teller op te geven voor alle processen op de lokale computer. Het resultaat wordt opgeslagen in de $Procs
variabele. De $Procs
-variabele met de eigenschap CounterSamples verzendt de PerformanceCounterSample objecten naar de pijplijn.
Sort-Object
gebruikt de parameter eigenschap om de objecten te sorteren op CookedValue- in aflopende volgorde.
Format-Table
gebruikt de parameter Eigenschap om de kolommen voor de uitvoer te selecteren. Met de parameter AutoSize worden de kolombreedtes aangepast om afkapping te minimaliseren.
Parameters
-ComputerName
Hiermee geeft u één computernaam of een door komma's gescheiden matrix van externe computernamen. Gebruik de NetBIOS-naam, een IP-adres of de volledig gekwalificeerde domeinnaam van de computer.
Als u prestatiemeteritems wilt ophalen van de lokale -computer van, sluit u de parameter ComputerName uit.
Voor uitvoer zoals een ListSet- die de kolom MachineName bevat, geeft een punt (.
) de lokale computer aan.
Get-Counter
is niet afhankelijk van PowerShell-remoting. U kunt de parameter ComputerName gebruiken, zelfs als uw computer niet is geconfigureerd voor het uitvoeren van externe opdrachten.
Type: | String[] |
Aliassen: | Cn |
Position: | Named |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-Continuous
Wanneer Continue is opgegeven, krijgt Get-Counter
voorbeelden totdat u op Ctrl+C-drukt. Er worden elke seconde steekproeven verkregen voor elk opgegeven prestatiemeteritem. Gebruik de parameter SampleInterval om het interval tussen doorlopende voorbeelden te verhogen.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-Counter
Hiermee specificeert u het pad naar een of meer tellermeterpaden. Paden worden ingevoerd als een door komma's gescheiden matrix, een variabele of waarden uit een tekstbestand. U kunt tekenreeksen voor tegenpaden naar de pijplijn van Get-Counter
verzenden.
Tellerpaden gebruiken de volgende syntaxis:
\\ComputerName\CounterSet(Instance)\CounterName
\CounterSet(Instance)\CounterName
Bijvoorbeeld:
\\Server01\Processor(*)\% User Time
\Processor(*)\% User Time
De \\ComputerName
is optioneel in een prestatiemeteritempad. Als het pad naar de teller de computernaam niet bevat, gebruikt Get-Counter
de lokale computer.
Een sterretje (*
) in het exemplaar is een jokerteken om alle exemplaren van de teller op te halen.
Type: | String[] |
Position: | 0 |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | True |
Jokertekens accepteren: | True |
-ListSet
Geeft een lijst weer van de prestatiemeteritemssets op de computers. Gebruik een sterretje (*
) om alle tellersets op te geven. Voer één naam of een door komma's gescheiden tekenreeks met namen van tellersets in. U kunt sets van tellernamen door de pijplijn sturen.
Gebruik de parameter ListSet om een tellerset met opgemaakte tellerpaden op te halen. De eigenschappen Paden en PathsWithInstances van elke set tellers bevatten de afzonderlijke tellerpaden in de vorm van een tekenreeks.
U kunt de tekenreeksen voor het tellerpad opslaan in een variabele of de pijplijn gebruiken om de tekenreeks naar een andere Get-Counter
opdracht te verzenden.
Als u bijvoorbeeld elk Processor- tellerpad naar Get-Counter
wilt verzenden:
Get-Counter -ListSet Processor | Get-Counter
Notitie
In PowerShell 7 kan Get-Counter
de eigenschap Description van de tellerset niet ophalen. De Beschrijving is ingesteld op $null
.
Type: | String[] |
Position: | 0 |
Default value: | None |
Vereist: | True |
Pijplijninvoer accepteren: | True |
Jokertekens accepteren: | True |
-MaxSamples
Hiermee geeft u het aantal voorbeelden op dat moet worden opgehaald uit elke opgegeven prestatiemeteritem. Als u een constante stroom met voorbeelden wilt ophalen, gebruikt u de parameter Continue.
Als de parameter MaxSamples niet is opgegeven, krijgt Get-Counter
slechts één voorbeeld voor elke opgegeven teller.
Als u een grote gegevensset wilt verzamelen, voert u Get-Counter
uit als een PowerShell-achtergrondtaak. Zie about_Jobsvoor meer informatie.
Type: | Int64 |
Position: | Named |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-SampleInterval
Hiermee geeft u het aantal seconden tussen voorbeelden voor elke opgegeven prestatiemeteritem. Als de parameter SampleInterval niet is opgegeven, gebruikt Get-Counter
een interval van één seconde.
Type: | Int32 |
Position: | Named |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
Invoerwaarden
String[]
Get-Counter
accepteert pijplijninvoer voor tellerpaden en namen van tellersets.
Uitvoerwaarden
Met de parameter ListSet retourneert deze cmdlet CounterSet-objecten.
Met de standaardinstelling en de parameter Counter retourneert deze cmdlet PerformanceCounterSampleSet-objecten.
Notities
Als er geen parameters zijn opgegeven, krijgt Get-Counter
één voorbeeld voor elk opgegeven prestatiemeteritem. Gebruik de parameters MaxSamples en Continue om meer voorbeelden op te halen.
Get-Counter
gebruikt een interval van één seconde tussen steekproeven. Gebruik de parameter SampleInterval om het interval te verhogen.
De MaxSamples en SampleInterval waarden zijn van toepassing op alle tellers op elke computer in de opdracht. Als u verschillende waarden voor verschillende tellers wilt instellen, voert u afzonderlijke Get-Counter
opdrachten in.
Wanneer u in PowerShell 7 de parameter ListSet gebruikt, kan Get-Counter
de eigenschap Description van de tellerset niet ophalen. De Beschrijving is ingesteld op $null
.