Delen via


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-Tableverzonden. 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-Counterverzonden. 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-Objectverzonden. 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-Listverzonden. 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 Timeop 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 Timeop 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-Counterverzenden.

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-Counterwilt 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

CounterSet

Met de parameter ListSet retourneert deze cmdlet CounterSet-objecten.

PerformanceCounterSampleSet

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.