Delen via


Get-Counter

Hiermee worden prestatiemeteritems opgehaald van lokale en externe computers.

Syntax

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 Timeop 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-Tableverzonden. 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 Spaceop 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-Objectverzonden. 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 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 Teller 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 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[]
Aliases:Cn
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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
Required:False
Accept pipeline input:False
Accept wildcard characters: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-Counterverzenden.

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
Required:False
Accept pipeline input:True
Accept wildcard characters: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
Required:True
Accept pipeline input:True
Accept wildcard characters: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
Required:False
Accept pipeline input:False
Accept wildcard characters: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
Required:False
Accept pipeline input:False
Accept wildcard characters: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

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.