Get-Counter

Obtient les données de compteur de performances provenant des ordinateurs locaux et distants.

Syntax

Get-Counter
   [[-Counter] <String[]>]
   [-SampleInterval <Int32>]
   [-MaxSamples <Int64>]
   [-Continuous]
   [-ComputerName <String[]>]
   [<CommonParameters>]
Get-Counter
   [-ListSet] <String[]>
   [-ComputerName <String[]>]
   [<CommonParameters>]

Description

Cette applet de commande est disponible uniquement sur la plateforme Windows.

L’applet Get-Counter de commande obtient des données de compteur de performances directement à partir de l’instrumentation d’analyse des performances dans la famille de systèmes d’exploitation Windows. Get-Counter obtient les données de performances d’un ordinateur local ou d’ordinateurs distants.

Vous pouvez utiliser les Get-Counter paramètres pour spécifier un ou plusieurs ordinateurs, répertorier les jeux de compteurs de performances et les instances qu’ils contiennent, définir les intervalles d’échantillonnage et spécifier le nombre maximal d’échantillons. Sans paramètres, Get-Counter obtient les données des compteurs de performances pour un ensemble de compteurs système.

De nombreux jeux de compteurs sont protégés par des listes de contrôle d’accès (ACL). Pour afficher tous les jeux de compteurs, ouvrez PowerShell avec l’option Exécuter en tant qu’administrateur .

Cette applet de commande a été réintroduite dans PowerShell 7.

Remarque

Les noms des compteurs de performances sont localisés. Les exemples présentés ici utilisent les noms anglais des objets, compteurs et instances de performances. Les noms seront différents sur un système qui utilise une autre langue. Utilisez la Get-Counter -ListSet commande pour afficher les noms localisés.

Exemples

Exemple 1 : Obtenir la liste des ensembles de compteurs

Cet exemple obtient la liste des jeux de compteurs de l’ordinateur local.

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 utilise le paramètre ListSet avec un astérisque (*) pour obtenir la liste des jeux de compteurs. Le point (.) dans la colonne MachineName représente l’ordinateur local.

Exemple 2 : Spécifier sampleInterval et MaxSamples

Cet exemple obtient les données de compteur pour tous les processeurs sur l’ordinateur local. Les données sont collectées à intervalles de deux secondes jusqu’à ce qu’il y ait trois échantillons.

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 utilise le paramètre Counter pour spécifier le chemin d’accès \Processor(_Total)\% Processor Timedu compteur . Le paramètre SampleInterval définit un intervalle de deux secondes sur case activée le compteur. MaxSamples détermine que trois sont le nombre maximal de fois pour case activée le compteur.

Exemple 3 : Obtenir des exemples continus d’un compteur

Cet exemple obtient des exemples continus pour un compteur toutes les secondes. Pour arrêter la commande, appuyez sur CTRL+C. Pour spécifier un intervalle plus long entre les exemples, utilisez le paramètre 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 utilise le paramètre Counter pour spécifier le \Processor\% Processor Time compteur. Le paramètre continu spécifie d’obtenir des échantillons toutes les secondes jusqu’à ce que la commande soit arrêtée avec Ctrl+C.

Exemple 4 : Liste alphabétique des jeux de compteurs

Cet exemple utilise le pipeline pour obtenir le jeu de listes de compteurs, puis trier la liste par ordre alphabétique.

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 utilise le paramètre ListSet avec un astérisque (*) pour obtenir une liste complète des jeux de compteurs. Les objets CounterSet sont envoyés vers le bas du pipeline. Sort-Object utilise le paramètre Property pour spécifier que les objets sont triés par CounterSetName. Les objets sont envoyés vers le bas du pipeline vers Format-Table. Le paramètre AutoSize ajuste les largeurs de colonne pour réduire la troncation.

Le point (.) dans la colonne MachineName représente l’ordinateur local.

Exemple 5 : Exécuter un travail en arrière-plan pour obtenir des données de compteur

Dans cet exemple, Start-Job exécute une Get-Counter commande en tant que travail en arrière-plan sur l’ordinateur local. Pour afficher la sortie du compteur de performances à partir du travail, utilisez l’applet Receive-Job de commande.

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 utilise le paramètre ScriptBlock pour exécuter une Get-Counter commande. Get-Counter utilise le paramètre Counter pour spécifier le chemin d’accès \LogicalDisk(_Total)\% Free Spacedu compteur . Le paramètre MaxSamples spécifie d’obtenir 1 000 exemples du compteur.

Exemple 6 : Obtenir des données de compteur à partir de plusieurs ordinateurs

Cet exemple utilise une variable pour obtenir des données de compteur de performances à partir de deux ordinateurs.

$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

La $DiskReads variable stocke le chemin du \LogicalDisk(C:)\Disk Reads/sec compteur. La $DiskReads variable est envoyée vers le bas du pipeline vers Get-Counter. Le compteur est le premier paramètre de position et accepte le chemin stocké dans $DiskReads. ComputerName spécifie les deux ordinateurs et MaxSamples spécifie pour obtenir 10 échantillons de chaque ordinateur.

Exemple 7 : Obtenir les valeurs d’instance d’un compteur à partir de plusieurs ordinateurs aléatoires

Cet exemple obtient la valeur d’un compteur de performances sur 50 ordinateurs distants aléatoires dans l’entreprise. Le paramètre ComputerName utilise des noms d’ordinateurs aléatoires stockés dans une variable. Pour mettre à jour les noms d’ordinateurs dans la variable, recréez la variable.

Une alternative pour les noms de serveur dans le paramètre ComputerName consiste à utiliser un fichier texte. Par exemple :

-ComputerName (Get-Random (Get-Content -Path C:\Servers.txt) -Count 50)

Le chemin du compteur inclut un astérisque (*) dans le nom de l’instance pour obtenir les données de chacun des processeurs de l’ordinateur distant.

$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

L’applet Get-Random de commande utilise Get-Content pour sélectionner 50 noms d’ordinateurs aléatoires dans le Servers.txt fichier. Les noms d’ordinateur distants sont stockés dans la $Servers variable. Le \Processor(*)\% Processor Time chemin d’accès du compteur est stocké dans la $Counter variable. Get-Counter utilise le paramètre Counter pour spécifier les compteurs dans la $Counter variable. Le paramètre ComputerName spécifie les noms d’ordinateurs dans la $Servers variable.

Exemple 8 : Utiliser la propriété Path pour obtenir des noms de chemin mis en forme

Cet exemple utilise la propriété Path d’un jeu de compteurs pour rechercher les noms de chemin d’accès mis en forme pour les compteurs de performances.

Le pipeline est utilisé avec l’applet Where-Object de commande pour rechercher un sous-ensemble des noms de chemins d’accès. Pour rechercher une liste complète des ensembles de compteurs, supprimez le pipeline (|) et Where-Object la commande.

Il $_ s’agit d’une variable automatique pour l’objet actuel dans le pipeline. Pour plus d’informations, consultez 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 utilise le paramètre ListSet pour spécifier le jeu de compteurs de mémoire . La commande est placée entre parenthèses afin que la propriété Path retourne chaque chemin sous forme de chaîne. Les objets sont envoyés vers le bas du pipeline vers Where-Object. Where-Object utilise la variable $_ pour traiter chaque objet et utilise l’opérateur -like pour rechercher des correspondances pour la chaîne *Cache*. Les astérisques (*) sont génériques carte s pour tous les caractères.

Exemple 9 : Utiliser la propriété PathWithInstances pour obtenir les noms de chemins mis en forme

Cet exemple obtient les noms de chemin d’accès mis en forme qui incluent les instances des compteurs de performances 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 utilise le paramètre ListSet pour spécifier le jeu de compteurs PhysicalDisk . La commande est placée entre parenthèses afin que la propriété PathWithInstances retourne chaque instance de chemin d’accès sous forme de chaîne.

Exemple 10 : Obtenir une valeur unique pour chaque compteur d’un jeu de compteurs

Dans cet exemple, une valeur unique est retournée pour chaque compteur de performances dans le jeu de compteurs mémoire de l’ordinateur local.

$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 utilise le paramètre ListSet pour spécifier le jeu de compteurs de mémoire . La commande est placée entre parenthèses afin que la propriété Path retourne chaque chemin sous forme de chaîne. Les chemins d’accès sont stockés dans la $MemCounters variable. Get-Counter utilise le paramètre Counter pour spécifier les chemins d’accès du compteur dans la $MemCounters variable.

Exemple 11 : Afficher les valeurs de propriété d’un objet

Les valeurs de propriété dans l’objet PerformanceCounterSample représentent chaque exemple de données. Dans cet exemple, nous utilisons les propriétés de l’objet CounterSamples pour examiner, sélectionner, trier et regrouper les données.

$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

Le chemin du compteur est stocké dans la $Counter variable. Get-Counter obtient un exemple des valeurs de compteur et stocke les résultats dans la $Data variable. La $Data variable utilise la propriété CounterSamples pour obtenir les propriétés de l’objet. L’objet est envoyé vers le bas du pipeline vers Format-List. Le paramètre Property utilise un astérisque (*) wild carte pour sélectionner toutes les propriétés.

Exemple 12 : Valeurs du tableau de compteurs de performances

Dans cet exemple, une variable stocke chaque compteur de performances. La propriété CounterSamples est un tableau qui peut afficher des valeurs de compteur spécifiques.

Pour afficher chaque exemple de compteur, utilisez $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 utilise le paramètre Counter pour spécifier le compteur \Processor(*)\% Processor Time. Les valeurs sont stockées dans la $Counter variable. $Counter.CounterSamples[0] affiche la valeur de tableau pour la première valeur de compteur.

Exemple 13 : Comparer les valeurs du compteur de performances

Cet exemple recherche la durée du processeur utilisée par chaque processeur sur l’ordinateur local. La propriété CounterSamples est utilisée pour comparer les données de compteur par rapport à une valeur spécifiée.

Pour afficher chaque exemple de compteur, utilisez $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 utilise le paramètre Counter pour spécifier le compteur \Processor(*)\% Processor Time. Les valeurs sont stockées dans la $Counter variable. Les objets stockés dans $Counter.CounterSamples le pipeline sont envoyés vers le bas. Where-Object utilise un bloc de script pour comparer chaque valeur d’objet à une valeur spécifiée de 20. Il $_.CookedValue s’agit d’une variable pour l’objet actuel dans le pipeline. Les compteurs avec une valeur CookedValue inférieure à 20 sont affichées.

Exemple 14 : Trier les données du compteur de performances

Cet exemple montre comment trier les données du compteur de performances. L’exemple recherche les processus sur l’ordinateur qui utilisent le plus de temps processeur pendant l’exemple.

$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 utilise le paramètre Counter pour spécifier le \Process(*)\% Processor Time compteur pour tous les processus sur l’ordinateur local. Le résultat est stocké dans la variable $Procs. La $Procs variable avec la propriété CounterSamples envoie les objets PerformanceCounterSample vers le bas du pipeline. Sort-Object utilise le paramètre Property pour trier les objets par CookedValue dans l’ordre décroissant . Format-Table utilise le paramètre Property pour sélectionner les colonnes de la sortie. Le paramètre AutoSize ajuste les largeurs de colonne pour réduire la troncation.

Paramètres

-ComputerName

Spécifie un nom d’ordinateur ou un tableau séparé par des virgules de noms d’ordinateur distants . Utilisez le nom NetBIOS, une adresse IP ou le nom de domaine complet de l’ordinateur.

Pour obtenir des données de compteur de performances à partir de l’ordinateur local , excluez le paramètre ComputerName . Pour la sortie telle qu’un ListSet qui contient la colonne MachineName , un point (.) indique l’ordinateur local.

Get-Counter ne s’appuie pas sur la communication à distance PowerShell. Vous pouvez utiliser le paramètre ComputerName même si votre ordinateur n’est pas configuré pour exécuter des commandes distantes.

Type:String[]
Aliases:Cn
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Continuous

Lorsque La constante est spécifiée, Get-Counter obtient des exemples jusqu’à ce que vous appuyiez sur Ctrl+C. Les échantillons sont obtenus toutes les secondes pour chaque compteur de performances spécifié. Utilisez le paramètre SampleInterval pour augmenter l’intervalle entre les échantillons continus.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Counter

Spécifie le chemin d’accès à un ou plusieurs chemins de compteur. Les chemins d’accès sont des entrées sous la forme d’un tableau séparé par des virgules, d’une variable ou de valeurs d’un fichier texte. Vous pouvez envoyer des chaînes de chemin d’accès de compteur vers le bas du pipeline vers Get-Counter.

Les chemins d’accès des compteurs utilisent la syntaxe suivante :

\\ComputerName\CounterSet(Instance)\CounterName

\CounterSet(Instance)\CounterName

Par exemple :

\\Server01\Processor(*)\% User Time

\Processor(*)\% User Time

Facultatif \\ComputerName dans un chemin de compteur de performances. Si le chemin du compteur n’inclut pas le nom de l’ordinateur, Get-Counter utilise l’ordinateur local.

Un astérisque (*) dans l’instance est un caractère générique carte pour obtenir toutes les instances du compteur.

Type:String[]
Position:0
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:True

-ListSet

Répertorie les jeux de compteurs de performances sur les ordinateurs. Utilisez un astérisque (*) pour spécifier tous les jeux de compteurs. Entrez un nom ou une chaîne séparée par des virgules de noms de jeu de compteurs. Vous pouvez envoyer des noms de compteurs vers le bas du pipeline.

Pour obtenir des chemins de compteur mis en forme, utilisez le paramètre ListSet . Les propriétés Paths et PathsWithInstances de chaque jeu de compteurs contiennent les chemins d’accès individuels mis en forme sous forme de chaîne.

Vous pouvez enregistrer les chaînes de chemin d’accès du compteur dans une variable ou utiliser le pipeline pour envoyer la chaîne à une autre Get-Counter commande.

Par exemple, pour envoyer chaque chemin de compteur de processeur à Get-Counter:

Get-Counter -ListSet Processor | Get-Counter

Remarque

Dans PowerShell 7, Get-Counter ne peut pas récupérer la propriété Description du jeu de compteurs. La description est définie sur $null.

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:True

-MaxSamples

Spécifie le nombre d’exemples à obtenir à partir de chaque compteur de performances spécifié. Pour obtenir un flux constant d’exemples, utilisez le paramètre Continu .

Si le paramètre MaxSamples n’est pas spécifié, Get-Counter obtient un seul exemple pour chaque compteur spécifié.

Pour collecter un jeu de données volumineux, exécutez Get-Counter un travail en arrière-plan PowerShell. Pour plus d’informations, consultez à propos des_tâches.

Type:Int64
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SampleInterval

Spécifie le nombre de secondes entre les échantillons pour chaque compteur de performances spécifié. Si le paramètre SampleInterval n’est pas spécifié, Get-Counter utilise un intervalle d’une seconde.

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Entrées

String[]

Get-Counter accepte l’entrée de pipeline pour les chemins d’accès de compteur et les noms des ensembles de compteurs.

Sorties

CounterSet

Avec le paramètre ListSet , cette applet de commande retourne des objets CounterSet .

PerformanceCounterSampleSet

Par défaut et avec le paramètre Counter , cette applet de commande retourne les objets PerformanceCounterSampleSet .

Notes

Si aucun paramètre n’est spécifié, Get-Counter obtient un exemple pour chaque compteur de performances spécifié. Utilisez les paramètres MaxSamples et Continuous pour obtenir d’autres exemples.

Get-Counter utilise un intervalle d’une seconde entre les échantillons. Utilisez le paramètre SampleInterval pour augmenter l’intervalle.

Les valeurs MaxSamples et SampleInterval s’appliquent à tous les compteurs sur chaque ordinateur de la commande. Pour définir différentes valeurs pour différents compteurs, entrez des commandes distinctes Get-Counter .

Dans PowerShell 7, lors de l’utilisation du paramètre ListSet , Get-Counter ne peut pas récupérer la propriété Description du jeu de compteurs. La description est définie sur $null.