Compartir a través de


Get-Counter

Obtiene los datos de contador de rendimiento de equipos locales y remotos.

Syntax

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

Description

Este cmdlet solo está disponible en la plataforma Windows.

El Get-Counter cmdlet obtiene datos del contador de rendimiento directamente de la instrumentación de supervisión del rendimiento en la familia de sistemas operativos Windows. Get-Counter obtiene datos de rendimiento de un equipo local o equipos remotos.

Puede usar los Get-Counter parámetros para especificar uno o varios equipos, enumerar los conjuntos de contadores de rendimiento y las instancias que contienen, establecer los intervalos de ejemplo y especificar el número máximo de muestras. Sin parámetros, Get-Counter obtiene los datos del contador de rendimiento de un conjunto de contadores del sistema.

Muchos conjuntos de contadores están protegidos por listas de control de acceso (ACL). Para ver todos los conjuntos de contadores, abra PowerShell con la opción Ejecutar como administrador .

Este cmdlet se ha vuelto a introducir en PowerShell 7.

Nota:

Los nombres de los contadores de rendimiento se localizan. Los ejemplos que se muestran aquí usan los nombres en inglés de los objetos de rendimiento, los contadores y las instancias. Los nombres serán diferentes en un sistema que use otro idioma. Use el Get-Counter -ListSet comando para ver los nombres localizados.

Ejemplos

Ejemplo 1: Obtener la lista de conjuntos de contadores

En este ejemplo se obtiene la lista de conjuntos de contadores del equipo 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 usa el parámetro ListSet con un asterisco (*) para obtener la lista de conjuntos de contadores. El punto (.) de la columna MachineName representa el equipo local.

Ejemplo 2: Especificar SampleInterval y MaxSamples

En este ejemplo se obtienen los datos de contador de todos los procesadores del equipo local. Los datos se recopilan a intervalos de dos segundos hasta que hay tres ejemplos.

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 usa el parámetro Counter para especificar la ruta \Processor(_Total)\% Processor Timede acceso del contador . El parámetro SampleInterval establece un intervalo de dos segundos para comprobar el contador. MaxSamples determina que tres es el número máximo de veces que se va a comprobar el contador.

Ejemplo 3: Obtención de muestras continuas de un contador

En este ejemplo se obtienen ejemplos continuos para un contador cada segundo. Para detener el comando, presione CTRL+C. Para especificar un intervalo más largo entre ejemplos, use el parámetro 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 usa el parámetro Counter para especificar el \Processor\% Processor Time contador. El parámetro Continuous especifica obtener muestras cada segundo hasta que el comando se detenga con CTRL+C.

Ejemplo 4: Lista alfabética de conjuntos de contadores

En este ejemplo se usa la canalización para obtener el conjunto de listas de contadores y, a continuación, ordenar la lista en orden alfabético.

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 usa el parámetro ListSet con un asterisco (*) para obtener una lista completa de conjuntos de contadores. Los objetos CounterSet se envían a la canalización. Sort-Object usa el parámetro Property para especificar que los objetos se ordenan por CounterSetName. Los objetos se envían por la canalización a Format-Table. El parámetro AutoSize ajusta los anchos de columna para minimizar el truncamiento.

El punto (.) de la columna MachineName representa el equipo local.

Ejemplo 5: Ejecución de un trabajo en segundo plano para obtener datos de contador

En este ejemplo, Start-Job ejecuta un comando como un Get-Counter trabajo en segundo plano en el equipo local. Para ver la salida del contador de rendimiento del trabajo, use el Receive-Job cmdlet .

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 usa el parámetro ScriptBlock para ejecutar un Get-Counter comando. Get-Counter usa el parámetro Counter para especificar la ruta \LogicalDisk(_Total)\% Free Spacede acceso del contador . El parámetro MaxSamples especifica para obtener 1000 muestras del contador.

Ejemplo 6: Obtención de datos de contadores de varios equipos

En este ejemplo se usa una variable para obtener datos de contadores de rendimiento de dos equipos.

$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 almacena la ruta de acceso del \LogicalDisk(C:)\Disk Reads/sec contador. La $DiskReads variable se envía por la canalización a Get-Counter. Counter es el primer parámetro de posición y acepta la ruta de acceso almacenada en $DiskReads. ComputerName especifica los dos equipos y MaxSamples especifica obtener 10 muestras de cada equipo.

Ejemplo 7: Obtener los valores de instancia de un contador de varios equipos aleatorios

En este ejemplo se obtiene el valor de un contador de rendimiento en 50 equipos remotos aleatorios de la empresa. El parámetro ComputerName usa nombres de equipo aleatorios almacenados en una variable. Para actualizar los nombres de equipo de la variable, vuelva a crear la variable.

Una alternativa para los nombres de servidor en el parámetro ComputerName es usar un archivo de texto. Por ejemplo:

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

La ruta de acceso del contador incluye un asterisco (*) en el nombre de instancia para obtener los datos de cada uno de los procesadores del equipo remoto.

$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

El Get-Random cmdlet usa Get-Content para seleccionar 50 nombres de equipo aleatorios del Servers.txt archivo. Los nombres de equipo remoto se almacenan en la $Servers variable . La \Processor(*)\% Processor Time ruta de acceso del contador se almacena en la $Counter variable . Get-Counter usa el parámetro Counter para especificar los contadores en la $Counter variable . El parámetro ComputerName especifica los nombres de equipo de la $Servers variable .

Ejemplo 8: Usar la propiedad Path para obtener nombres de ruta de acceso con formato

En este ejemplo se usa la propiedad Path de un conjunto de contadores para buscar los nombres de ruta de acceso con formato para los contadores de rendimiento.

La canalización se usa con el Where-Object cmdlet para buscar un subconjunto de los nombres de ruta de acceso. Para buscar una lista completa de conjuntos de contadores de rutas de acceso, quite la canalización (|) y Where-Object el comando .

$_ es una variable automática para el objeto actual de la canalización. Para obtener más información, vea 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 usa el parámetro ListSet para especificar el conjunto de contadores de memoria . El comando se incluye entre paréntesis para que la propiedad Paths devuelva cada ruta de acceso como una cadena. Los objetos se envían por la canalización a Where-Object. Where-Object usa la variable $_ para procesar cada objeto y usa el -like operador para buscar coincidencias para la cadena *Cache*. Los asteriscos (*) son caracteres comodín para cualquier carácter.

Ejemplo 9: Usar la propiedad PathsWithInstances para obtener nombres de ruta de acceso con formato

En este ejemplo se obtienen los nombres de ruta de acceso con formato que incluyen las instancias de los contadores de rendimiento 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 usa el parámetro ListSet para especificar el conjunto de contadores PhysicalDisk . El comando se incluye entre paréntesis para que la propiedad PathsWithInstances devuelva cada instancia de ruta de acceso como una cadena.

Ejemplo 10: Obtener un único valor para cada contador de un conjunto de contadores

En este ejemplo, se devuelve un valor único para cada contador de rendimiento del conjunto de contadores de memoria del equipo 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 usa el parámetro ListSet para especificar el conjunto de contadores de memoria . El comando se incluye entre paréntesis para que la propiedad Paths devuelva cada ruta de acceso como una cadena. Las rutas de acceso se almacenan en la $MemCounters variable . Get-Counter usa el parámetro Counter para especificar las rutas de acceso del contador en la $MemCounters variable .

Ejemplo 11: Mostrar los valores de propiedad de un objeto

Los valores de propiedad del objeto PerformanceCounterSample representan cada ejemplo de datos. En este ejemplo se usan las propiedades del objeto CounterSamples para examinar, seleccionar, ordenar y agrupar los datos.

$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

La ruta de acceso del contador se almacena en la $Counter variable . Get-Counter obtiene un ejemplo de los valores de contador y almacena los resultados en la $Data variable . La $Data variable usa la propiedad CounterSamples para obtener las propiedades del objeto. El objeto se envía por la canalización a Format-List. El parámetro Property usa un carácter comodín asterisco (*) para seleccionar todas las propiedades.

Ejemplo 12: Valores de matriz de contadores de rendimiento

En este ejemplo, una variable almacena cada contador de rendimiento. La propiedad CounterSamples es una matriz que puede mostrar valores de contador específicos.

Para mostrar cada ejemplo de contador, use $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 usa el parámetro Counter para especificar el contador \Processor(*)\% Processor Time. Los valores se almacenan en la $Counter variable . $Counter.CounterSamples[0] muestra el valor de la matriz para el primer valor de contador.

Ejemplo 13: Comparación de valores de contadores de rendimiento

En este ejemplo se busca la cantidad de tiempo de procesador que usa cada procesador en el equipo local. La propiedad CounterSamples se usa para comparar los datos del contador con un valor especificado.

Para mostrar cada ejemplo de contador, use $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 usa el parámetro Counter para especificar el contador \Processor(*)\% Processor Time. Los valores se almacenan en la $Counter variable . Los objetos almacenados en $Counter.CounterSamples se envían a la canalización. Where-Object usa un bloque de script para comparar cada valor de objetos con un valor especificado de 20. $_.CookedValue es una variable para el objeto actual de la canalización. Se muestran contadores con un CookedValue inferior a 20.

Ejemplo 14: Ordenar datos del contador de rendimiento

En este ejemplo se muestra cómo ordenar los datos del contador de rendimiento. En el ejemplo se buscan los procesos del equipo que usan la mayor cantidad de tiempo de procesador durante el ejemplo.

$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 usa el parámetro Counter para especificar el \Process(*)\% Processor Time contador para todos los procesos del equipo local. El resultado se almacena en la variable $Procs. La $Procs variable con la propiedad CounterSamples envía los objetos PerformanceCounterSample por la canalización. Sort-Object usa el parámetro Property para ordenar los objetos por CookedValue en orden descendente . Format-Table usa el parámetro Property para seleccionar las columnas de la salida. El parámetro AutoSize ajusta los anchos de columna para minimizar el truncamiento.

Parámetros

-ComputerName

Especifica un nombre de equipo o una matriz separada por comas de nombres de equipo remoto . Use el nombre netBIOS, una dirección IP o el nombre de dominio completo del equipo.

Para obtener datos del contador de rendimiento del equipo local , excluya el parámetro ComputerName . Para la salida, como un ListSet que contiene la columna MachineName , un punto (.) indica el equipo local.

Get-Counter no depende de la comunicación remota de PowerShell. Puede usar el parámetro ComputerName incluso si el equipo no está configurado para ejecutar comandos remotos.

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

-Continuous

Cuando se especifica Continuous, Get-Counter obtiene muestras hasta que presiona CTRL+C. Las muestras se obtienen cada segundo para cada contador de rendimiento especificado. Use el parámetro SampleInterval para aumentar el intervalo entre muestras continuas.

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

-Counter

Especifica la ruta de acceso a una o varias rutas de acceso de contador. Las rutas de acceso son entradas como una matriz separada por comas, una variable o valores de un archivo de texto. Puede enviar cadenas de ruta de acceso de contador por la canalización a Get-Counter.

Las rutas de acceso de contador usan la sintaxis siguiente:

\\ComputerName\CounterSet(Instance)\CounterName

\CounterSet(Instance)\CounterName

Por ejemplo:

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

\Processor(*)\% User Time

\\ComputerName es opcional en una ruta de acceso del contador de rendimiento. Si la ruta de acceso del contador no incluye el nombre del equipo, Get-Counter usa el equipo local.

Un asterisco (*) de la instancia es un carácter comodín para obtener todas las instancias del contador.

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

-ListSet

Enumera los conjuntos de contadores de rendimiento en los equipos. Use un asterisco (*) para especificar todos los conjuntos de contadores. Escriba un nombre o una cadena separada por comas de nombres de conjunto de contadores. Puede enviar nombres de conjunto de contadores a la canalización.

Para obtener rutas de acceso de contador con formato de conjuntos de contadores, use el parámetro ListSet . Las propiedades Paths y PathsWithInstances de cada conjunto de contadores contienen las rutas de acceso de contador individuales con formato de cadena.

Puede guardar las cadenas de ruta de acceso del contador en una variable o usar la canalización para enviar la cadena a otro Get-Counter comando.

Por ejemplo, para enviar cada ruta de acceso del contador de procesador a Get-Counter:

Get-Counter -ListSet Processor | Get-Counter

Nota:

En PowerShell 7, Get-Counter no se puede recuperar la propiedad Description del conjunto de contadores. La descripción se establece en $null.

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

-MaxSamples

Especifica el número de muestras que se van a obtener de cada contador de rendimiento especificado. Para obtener un flujo constante de ejemplos, use el parámetro Continuous .

Si no se especifica el parámetro MaxSamples , Get-Counter solo obtiene una muestra para cada contador especificado.

Para recopilar un conjunto de datos grande, ejecute Get-Counter como un trabajo en segundo plano de PowerShell. Para más información, consulte about_Jobs (Acerca de los trabajos).

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

-SampleInterval

Especifica el número de segundos entre muestras para cada contador de rendimiento especificado. Si no se especifica el parámetro SampleInterval , Get-Counter usa un intervalo de un segundo.

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

Entradas

String[]

Get-Counter acepta la entrada de canalización para las rutas de acceso de contador y los nombres del conjunto de contadores.

Salidas

CounterSet

Con el parámetro ListSet , este cmdlet devuelve objetos CounterSet .

PerformanceCounterSampleSet

De forma predeterminada y con el parámetro Counter , este cmdlet devuelve objetos PerformanceCounterSampleSet .

Notas

Si no se especifica ningún parámetro, Get-Counter obtiene un ejemplo para cada contador de rendimiento especificado. Use los parámetros MaxSamples y Continuous para obtener más ejemplos.

Get-Counter usa un intervalo de un segundo entre muestras. Use el parámetro SampleInterval para aumentar el intervalo.

Los valores MaxSamples y SampleInterval se aplican a todos los contadores de cada equipo del comando. Para establecer valores diferentes para distintos contadores, escriba comandos independientes Get-Counter .

En PowerShell 7, al usar el parámetro ListSet , Get-Counter no se puede recuperar la propiedad Description del conjunto de contadores. La descripción se establece en $null.