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 Get-Counter
de cmdlet worden prestatiemeteritems rechtstreeks opgehaald uit de instrumentatie voor prestatiebewaking in de Windows-serie van besturingssystemen. Get-Counter
haalt prestatiegegevens op van een lokale computer of externe computers.
U kunt de Get-Counter
parameters gebruiken om een of meer computers op te geven, de prestatiemeteritemssets en de exemplaren die ze bevatten weer te geven, de voorbeeldintervallen in te stellen en het maximum aantal steekproeven op te geven. Zonder parameters Get-Counter
worden prestatiemeteritems opgehaald 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 Get-Counter -ListSet
opdracht 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 met twee seconden verzameld totdat er drie steekproeven 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 tellerpad \Processor(_Total)\% Processor Time
op te geven. 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
Met deze voorbeelden worden elke seconde doorlopende voorbeelden voor een teller weergegeven. Druk op Ctrl+C om de opdracht te stoppen. 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 Teller om de \Processor\% Processor Time
teller op te geven.
De parameter Doorlopend geeft aan om elke seconde steekproeven op te halen totdat de opdracht is gestopt met Ctrl+C.
Voorbeeld 4: Alfabetische lijst met itemsets
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 naar beneden verzonden in de pijplijn. Sort-Object
gebruikt de parameter Eigenschap om op te geven dat de objecten worden gesorteerd op CounterSetName. De objecten worden naar de pijplijn Format-Table
verzonden. De parameter AutoSize past de kolombreedten aan 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 Start-Job
voert u een Get-Counter
opdracht uit als achtergrondtaak op de lokale computer.
Gebruik de Receive-Job
cmdlet om de uitvoer van de prestatiemeteritem 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 tellerpad \LogicalDisk(_Total)\% Free Space
op te geven. De parameter MaxSamples geeft aan dat er 1000 voorbeelden van de teller moeten worden weergegeven.
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 $DiskReads
variabele slaat het \LogicalDisk(C:)\Disk Reads/sec
tellerpad op. De $DiskReads
variabele wordt naar de pijplijn verzonden.Get-Counter
Teller is de eerste positieparameter en accepteert het pad dat is opgeslagen in $DiskReads
. ComputerName geeft de twee computers en MaxSamples geeft aan dat er 10 voorbeelden van elke computer 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. Voorbeeld:
-ComputerName (Get-Random (Get-Content -Path C:\Servers.txt) -Count 50)
Het pad naar de teller bevat een sterretje (*
) in de exemplaarnaam om de gegevens op te halen voor elk van de processors van de externe computer.
$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 uit het Servers.txt
bestand te selecteren. De namen van de externe computers worden opgeslagen in de $Servers
variabele. 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 $Counter
variabele op te geven. Met de parameter ComputerName worden de computernamen in de $Servers
variabele opgegeven.
Voorbeeld 8: De eigenschap Pad gebruiken om opgemaakte padnamen op te halen
In dit voorbeeld wordt de eigenschap Path van een teller gebruikt om de opgemaakte padnamen voor de prestatiemeteritems te vinden.
De pijplijn wordt gebruikt met de Where-Object
cmdlet om een subset van de padnamen te vinden. Als u een tellerset wilt vinden, verwijdert u de pijplijn (|
) en Where-Object
de opdracht.
Dit $_
is een automatische variabele voor het huidige object in de pijplijn.
Zie about_Automatic_Variables voor meer informatie.
(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 set geheugentellers op te geven. De opdracht staat tussen haakjes, zodat de eigenschap Paden elk pad als tekenreeks retourneert. De objecten worden naar de pijplijn Where-Object
verzonden. Where-Object
gebruikt de variabele $_
om elk object te verwerken en gebruikt de -like
operator om overeenkomsten voor de tekenreeks *Cache*
te vinden. 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 weergegeven die de exemplaren voor de FysiekeDisk-prestatiemeteritems 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 tellerset PhysicalDisk op te geven. De opdracht staat tussen haakjes, zodat de eigenschap PathsWithInstances elk padexemplaren als tekenreeks retourneert.
Voorbeeld 10: Eén waarde ophalen voor elke teller in een tellerset
In dit voorbeeld wordt één waarde geretourneerd voor elke prestatiemeteritem in de geheugentellerset 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 set geheugentellers 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 in de $MemCounters
variabele op te geven.
Voorbeeld 11: De eigenschapswaarden van een object weergeven
De eigenschapswaarden in het object PerformanceCounterSample vertegenwoordigen elk gegevensvoorbeeld. In dit voorbeeld gebruiken we de eigenschappen van het object CounterSamples 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
haalt één voorbeeld van de tellerwaarden op en slaat de resultaten op in de $Data
variabele. De $Data
variabele maakt gebruik van de eigenschap CounterSamples om de eigenschappen van het object op te halen. Het object wordt naar de pijplijn verzonden.Format-List
De parameter Eigenschap maakt gebruik van een sterretje (*
) jokerteken 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 Teller 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 Teller 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 via de pijplijn verzonden. Where-Object
gebruikt een scriptblok om elke objectwaarde te vergelijken met een opgegeven waarde van 20
. Dit $_.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 omlaag in 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. De parameter AutoSize past de kolombreedten aan om afkapping te minimaliseren.
Parameters
-ComputerName
Hiermee geeft u één computernaam of een door komma's gescheiden matrix met namen van externe computers. Gebruik de NetBIOS-naam, een IP-adres of de volledig gekwalificeerde domeinnaam van de computer.
Als u prestatiemeteritems van de lokale computer wilt ophalen, 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 externe communicatie van PowerShell. U kunt de parameter ComputerName zelfs gebruiken 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 Doorlopend is opgegeven, Get-Counter
worden voorbeelden weergegeven totdat u op Ctrl+C drukt. Er worden elke seconde steekproeven verkregen voor elk opgegeven prestatiemeteritem. Gebruik de parameter SampleInterval om het interval tussen continue voorbeelden te verhogen.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-Counter
Hiermee geeft u het pad naar een of meer meterpaden. Paden worden ingevoerd als een door komma's gescheiden matrix, een variabele of waarden uit een tekstbestand. U kunt tekenreeksen naar het tellerpad naar de pijplijn Get-Counter
verzenden.
Tellerpaden gebruiken de volgende syntaxis:
\\ComputerName\CounterSet(Instance)\CounterName
\CounterSet(Instance)\CounterName
Voorbeeld:
\\Server01\Processor(*)\% User Time
\Processor(*)\% User Time
De \\ComputerName
optie is optioneel in een pad naar een prestatiemeteritem. Als het tellerpad de computernaam niet bevat, Get-Counter
gebruikt u 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 tellernamen in de pijplijn verzenden.
Gebruik de parameter ListSet om een tellerset met opgemaakte tellerpaden op te halen. De eigenschappen Paden en PadenWithInstances van elke tellerset bevatten de afzonderlijke tellerpaden die zijn opgemaakt als 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 processortellerpad wilt verzenden naar Get-Counter
:
Get-Counter -ListSet Processor | Get-Counter
Notitie
In PowerShell 7 Get-Counter
kan de eigenschap Description van de tellerset niet worden opgehaald. 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 Doorlopend .
Als de parameter MaxSamples niet is opgegeven, Get-Counter
krijgt u slechts één voorbeeld voor elke opgegeven teller.
Als u een grote gegevensset wilt verzamelen, voert u deze uit Get-Counter
als een PowerShell-achtergrondtaak. Zie About Jobs (Taken) voor 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, Get-Counter
gebruikt u 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 .
Standaard en met de parameter Teller retourneert deze cmdlet PerformanceCounterSampleSet-objecten .
Notities
Als er geen parameters zijn opgegeven, Get-Counter
haalt u één voorbeeld op voor elk opgegeven prestatiemeteritem. Gebruik de parameters MaxSamples en Continue om meer voorbeelden op te halen.
Get-Counter
maakt gebruik van een interval van één seconde tussen steekproeven. Gebruik de parameter SampleInterval om het interval te verhogen.
De waarden MaxSamples en SampleInterval 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, Get-Counter
kan de eigenschap Description van de tellerset niet worden opgehaald. De beschrijving is ingesteld op $null
.