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 Time
de 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 Space
de 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
Con el parámetro ListSet , este cmdlet devuelve objetos CounterSet .
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
.