Get-Counter
Obtiene los datos del contador de rendimiento de los equipos locales y remotos.
Sintaxis
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 cmdlet Get-Counter
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 parámetros de Get-Counter
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 datos de contadores de rendimiento para 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 están localizados. 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 comando Get-Counter -ListSet
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 ordenador 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 de acceso al contador \Processor(_Total)\% Processor Time
. 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 muestras continuas para un contador cada segundo. Para detener el comando, presione CTRL+C. Para especificar un intervalo más largo entre los 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 de contador para especificar el contador de \Processor\% Processor Time
.
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 pleca para obtener el conjunto de listas de contadores y, a continuación, ordenar la lista por 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: Ejecutar un trabajo en segundo plano para obtener datos de contador
En este ejemplo, Start-Job
ejecuta un comando Get-Counter
como trabajo en segundo plano en el equipo local.
Para ver la salida del contador de rendimiento del trabajo, use el cmdlet Receive-Job
.
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 de para ejecutar un comando de Get-Counter
. Get-Counter
usa el parámetro Counter para especificar la ruta de acceso al contador \LogicalDisk(_Total)\% Free Space
. El parámetro MaxSamples especifica para obtener 1000 muestras del contador.
Ejemplo 6: Obtener 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 variable $DiskReads
almacena la ruta de acceso al contador \LogicalDisk(C:)\Disk Reads/sec
. La variable $DiskReads
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 cmdlet Get-Random
usa Get-Content
para seleccionar 50 nombres de equipo aleatorios en el archivo Servers.txt
. Los nombres de equipo remoto se almacenan en la variable $Servers
. La ruta de acceso del contador \Processor(*)\% Processor Time
se almacena en la variable $Counter
. Get-Counter
usa el parámetro de contador de para especificar los contadores en la variable $Counter
. El parámetro ComputerName especifica los nombres de equipo de la variable $Servers
.
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 encontrar los nombres de ruta de acceso con formato para los contadores de rendimiento.
La pleca se usa con el cmdlet Where-Object
para buscar un subconjunto de los nombres de ruta. Para buscar una lista completa de rutas de conjuntos de contadores, quite la pleca (|
) y el comando Where-Object
.
El $_
es una variable automática para el objeto actual de la canalización.
Para obtener más información, consulte sobre_Variables_Automáticas.
(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 operador -like
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 solo valor 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 variable $MemCounters
. Get-Counter
usa el parámetro Counter para especificar las rutas de acceso del contador en la variable $MemCounters
.
Ejemplo 11: Mostrar los valores de propiedad de un objeto
Los valores de propiedad en el objeto PerformanceCounterSample representan cada muestra de datos. En este ejemplo se usan las propiedades del objeto counterSamples de 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 variable $Counter
. Get-Counter
obtiene un ejemplo de los valores del contador y almacena los resultados en la variable $Data
. La variable $Data
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 asterisco como comodín (*
) 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
utiliza el parámetro Counter de para especificar el contador \Processor(*)\% Processor Time
. Los valores se almacenan en la variable $Counter
.
$Counter.CounterSamples[0]
muestra el valor de matriz del 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 de contador de para especificar el contador \Processor(*)\% Processor Time
. Los valores se almacenan en la variable $Counter
. Los objetos almacenados en $Counter.CounterSamples
se envían por la canalización. Where-Object
usa un bloque de script para comparar cada valor de objetos con un valor especificado de 20
. El $_.CookedValue
es una variable para el objeto actual de la canalización. Se muestran contadores con un CookedValue que sea 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 contador de \Process(*)\% Processor Time
para todos los procesos del equipo local. El resultado se almacena en la variable $Procs
. La variable $Procs
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 por 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 lista de nombres de equipos remotos separados por comas. 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 una salida como 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.
Tipo: | String[] |
Alias: | Cn |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-Continuous
Cuando se especifica Continuous, Get-Counter
obtiene muestras hasta que se pulsa 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.
Tipo: | SwitchParameter |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-Counter
Especifica la ruta de acceso a uno o varios contadores. Las rutas de acceso se introducen como una matriz separada por comas, una variable o valores de un archivo de texto. Puede enviar cadenas de ruta 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
El \\ComputerName
es opcional en la ruta de un contador de rendimiento. Si la ruta de acceso del contador no incluye el nombre del equipo, Get-Counter
usa el equipo local.
Un asterisco (*
) en la instancia es un carácter comodín para obtener todas las instancias del contador.
Tipo: | String[] |
Posición: | 0 |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | True |
Aceptar caracteres comodín: | 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 lista de nombres de conjuntos de contadores separada por comas. Puede enviar los nombres de conjuntos de contadores por la canalización.
Para obtener rutas de acceso de contadores 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 contadores individuales con formato de cadena.
Puede guardar las cadenas de ruta del contador en una variable o usar el pipeline para enviar la cadena a otro comando Get-Counter
.
Por ejemplo, para enviar la ruta de contador de cada procesador a Get-Counter
:
Get-Counter -ListSet Processor | Get-Counter
Nota
En PowerShell 7, Get-Counter
no puede recuperar la propiedad Description del conjunto de contadores. Description se establece en $null
.
Tipo: | String[] |
Posición: | 0 |
Valor predeterminado: | None |
Requerido: | True |
Aceptar entrada de canalización: | True |
Aceptar caracteres comodín: | 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 trabajo en segundo plano de PowerShell. Para más información, consulte about_Jobs (Acerca de los trabajos).
Tipo: | Int64 |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | 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.
Tipo: | Int32 |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
Entradas
String[]
Get-Counter
acepta entradas de canalización para rutas de contador y nombres de conjuntos 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 en el comando. Para establecer valores diferentes para distintos contadores, escriba comandos de Get-Counter
independientes.
En PowerShell 7, al usar el parámetro ListSet, Get-Counter
no puede recuperar la propiedad Description del conjunto de contadores. Description se establece en $null
.