Get-Counter
Obtém dados do contador de desempenho de computadores locais e remotos.
Sintaxe
Get-Counter
[[-Counter] <String[]>]
[-SampleInterval <Int32>]
[-MaxSamples <Int64>]
[-Continuous]
[-ComputerName <String[]>]
[<CommonParameters>]
Get-Counter
[-ListSet] <String[]>
[-ComputerName <String[]>]
[<CommonParameters>]
Description
Este cmdlet só está disponível na plataforma Windows.
O cmdlet Get-Counter
obtém dados do contador de desempenho diretamente da instrumentação de monitoramento de desempenho da família de sistemas operacionais Windows.
Get-Counter
obtém dados de desempenho de um computador local ou de computadores remotos.
Você pode usar os parâmetros Get-Counter
para especificar um ou mais computadores, listar os conjuntos de contadores de desempenho e as instâncias que eles contêm, definir os intervalos de amostra e especificar o número máximo de amostras. Sem parâmetros, Get-Counter
obtém dados do contador de desempenho para um conjunto de contadores do sistema.
Muitos conjuntos de contadores são protegidos por listas de controle de acesso (ACL). Para ver todos os conjuntos de contadores, abra o PowerShell com a opção Executar como administrador.
Este cmdlet foi reintroduzido no PowerShell 7.
Observação
Os nomes dos contadores de desempenho são adaptados/localizados para a língua local. Os exemplos mostrados aqui usam os nomes em inglês dos objetos de desempenho, contadores e instâncias. Os nomes serão diferentes em um sistema que usa outro idioma. Use o comando Get-Counter -ListSet
para ver os nomes localizados.
Exemplos
Exemplo 1: Obter a lista de conjuntos de contadores
Este exemplo obtém a lista de conjuntos de contadores do computador 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 o parâmetro ListSet com um asterisco (*
) para obter a lista de conjuntos de contadores.
O ponto (.
) na coluna MachineName representa o computador local.
Exemplo 2: Especifique o SampleInterval e MaxSamples
Este exemplo obtém os dados do contador para todos os processadores no computador local. Os dados são coletados em intervalos de dois segundos até que haja três amostras.
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 o parâmetro Counter para especificar o caminho do contador \Processor(_Total)\% Processor Time
. O parâmetro SampleInterval define um intervalo de dois segundos para verificar o contador.
MaxSamples determina que três é o número máximo de vezes para verificar o contador.
Exemplo 3: Obter amostras contínuas de um contador
Este exemplo obtém amostras contínuas para um contador a cada segundo. Para parar o comando, pressione CTRL+C. Para especificar um intervalo maior entre amostras, use o 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 o Counter parâmetro para especificar o contador \Processor\% Processor Time
.
O parâmetro Continuous especifica para obter amostras a cada segundo até que o comando seja interrompido com CTRL+C.
Exemplo 4: Lista alfabética de conjuntos de contadores
Este exemplo utiliza o pipeline para obter o conjunto de contadores e, em seguida, classificar a lista por ordem alfabética.
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 o parâmetro ListSet com um asterisco (*
) para obter uma lista completa de conjuntos de contadores. Os objetos CounterSet são enviados pelo pipeline.
Sort-Object
usa o parâmetro Property para especificar que os objetos sejam classificados por CounterSetName. Os objetos são enviados através do pipeline para Format-Table
. O parâmetro AutoSize ajusta as larguras das colunas para minimizar o truncamento.
O ponto (.
) na coluna MachineName representa o computador local.
Exemplo 5: Executar um trabalho em segundo plano para obter dados do contador
Neste exemplo, Start-Job
executa um comando Get-Counter
como um trabalho em segundo plano no computador local.
Para exibir a saída do contador de desempenho do trabalho, use o 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 o parâmetro ScriptBlock para executar um comando Get-Counter
.
Get-Counter
usa o parâmetro Counter para especificar o caminho do contador \LogicalDisk(_Total)\% Free Space
. O parâmetro MaxSamples especifica para obter 1000 amostras do contador.
Exemplo 6: Obter dados do contador de vários computadores
Este exemplo usa uma variável para obter dados do contador de desempenho de dois computadores.
$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
A variável $DiskReads
armazena o caminho do contador \LogicalDisk(C:)\Disk Reads/sec
. A variável $DiskReads
é enviada pelo pipeline para Get-Counter
.
Counter é o primeiro parâmetro de posição e aceita o caminho armazenado em $DiskReads
.
ComputerName especifica os dois computadores e MaxSamples especifica para obter 10 amostras de cada computador.
Exemplo 7: Obter os valores de instância de um contador de vários computadores aleatórios
Este exemplo obtém o valor de um contador de desempenho em 50 computadores remotos aleatórios na empresa. O parâmetro ComputerName usa nomes de computador aleatórios armazenados em uma variável. Para atualizar os nomes dos computadores na variável, recrie a variável.
Uma alternativa para os nomes de servidor no parâmetro ComputerName é usar um arquivo de texto. Por exemplo:
-ComputerName (Get-Random (Get-Content -Path C:\Servers.txt) -Count 50)
O caminho do contador inclui um asterisco (*
) no nome da instância para obter os dados para cada um dos processadores do computador 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
O cmdlet Get-Random
usa Get-Content
para selecionar 50 nomes de computador aleatórios do arquivo Servers.txt
. Os nomes dos computadores remotos são armazenados na variável $Servers
. O caminho do contador de \Processor(*)\% Processor Time
é armazenado na variável $Counter
.
Get-Counter
usa o parâmetro Counter para especificar os contadores na variável $Counter
. O parâmetro ComputerName especifica os nomes de computador na variável $Servers
.
Exemplo 8: Use a propriedade Path para obter nomes de caminho formatados
Este exemplo usa a propriedade Path de um conjunto de contadores para localizar os nomes de caminho formatados para os contadores de desempenho.
O pipeline é usado com o cmdlet Where-Object
para encontrar um subconjunto de nomes de caminho. Para encontrar uma lista completa de caminhos de contadores em conjuntos de contadores, remova o comando do pipeline (|
) e o comando Where-Object
.
O $_
é uma variável automática para o objeto atual no pipeline.
Para obter mais informações, consulte 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 o parâmetro ListSet para especificar o conjunto de contadores de memória . O comando é colocado entre parênteses para que a propriedade Paths retorne cada caminho como uma cadeia de caracteres. Os objetos são enviados através do pipeline para Where-Object
.
Where-Object
usa a variável $_
para processar cada objeto e usa o operador -like
para encontrar correspondências para a cadeia de caracteres *Cache*
. Os asteriscos (*
) são caracteres universais para qualquer conjunto de caracteres.
Exemplo 9: Use a propriedade PathsWithInstances para obter nomes de caminho formatados
Este exemplo obtém os nomes de caminho formatados que incluem as instâncias dos contadores de desempenho 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 o parâmetro ListSet para especificar o conjunto de contadores PhysicalDisk. O comando é colocado entre parênteses para que a propriedade PathsWithInstances retorne cada ocorrência de caminho como uma cadeia de caracteres.
Exemplo 10: Obter um único valor para cada contador em um conjunto de contadores
Neste exemplo, um único valor é retornado para cada contador de desempenho no conjunto de contadores de da memória do computador 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 o parâmetro ListSet para especificar o conjunto de contadores de memória . O comando é colocado entre parênteses para que a propriedade Paths retorne cada caminho como uma cadeia de caracteres. Os caminhos são armazenados na variável $MemCounters
.
Get-Counter
usa o parâmetro Counter para especificar os caminhos do contador na variável $MemCounters
.
Exemplo 11: Exibir os valores de propriedade de um objeto
Os valores de propriedade no objeto de PerformanceCounterSample representam cada amostra de dados. Neste exemplo, usamos as propriedades do objeto CounterSamples para examinar, selecionar, classificar e agrupar os dados.
$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
O caminho do contador é armazenado na variável $Counter
.
Get-Counter
obtém uma amostra dos valores do contador e armazena os resultados na variável $Data
. A variável $Data
usa a propriedade CounterSamples para obter as propriedades do objeto. O objeto é enviado pelo pipeline para Format-List
. O parâmetro Property usa um curinga asterisco (*
) para selecionar todas as propriedades.
Exemplo 12: Valores da matriz do contador de desempenho
Neste exemplo, uma variável armazena cada contador de desempenho. A propriedade CounterSamples é uma matriz que pode exibir valores de contador específicos.
Para apresentar cada amostra do contador, utilize $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 o parâmetro Counter para especificar o contador \Processor(*)\% Processor Time
. Os valores são armazenados na variável $Counter
.
$Counter.CounterSamples[0]
exibe o valor da matriz para o primeiro valor do contador.
Exemplo 13: Comparar valores de contadores de desempenho
Este exemplo localiza a quantidade de tempo de processador usada por cada processador no computador local. A propriedade CounterSamples é usada para comparar os dados do contador com um valor especificado.
Para apresentar cada amostra do contador, utilize $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 o parâmetro Counter para especificar o contador \Processor(*)\% Processor Time
. Os valores são armazenados na variável $Counter
. Os objetos armazenados em $Counter.CounterSamples
são enviados pelo pipeline.
Where-Object
usa um bloco de script para comparar cada valor de objetos com um valor especificado de 20
. O $_.CookedValue
é uma variável para o objeto atual no pipeline. Contadores com um CookedValue menor que 20 são exibidos.
Exemplo 14: Classificar dados do contador de desempenho
Este exemplo mostra como classificar os dados do contador de desempenho. O exemplo localiza os processos no computador que estão usando mais tempo de processador durante o exemplo.
$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 o parâmetro Counter para especificar o contador de \Process(*)\% Processor Time
para todos os processos no computador local. O resultado é armazenado na variável $Procs
. A variável $Procs
com a propriedade CounterSamples envia os objetos PerformanceCounterSample pelo pipeline.
Sort-Object
usa o parâmetro Property para classificar os objetos pelo CookedValue em ordem decrescente .
Format-Table
usa o parâmetro Property para selecionar as colunas para a saída. O parâmetro AutoSize ajusta as larguras das colunas para minimizar o truncamento.
Parâmetros
-ComputerName
Especifica um nome de computador ou uma lista de nomes de computadores remotos separados por vírgulas . Use o nome NetBIOS, um endereço IP ou o nome de domínio totalmente qualificado do computador.
Para obter dados do contador de desempenho do computador local, exclua o parâmetro ComputerName.
Para resultados como um ListSet que contém a coluna MachineName, um ponto (.
) indica o computador local.
Get-Counter
não depende da funcionalidade de comunicação remota do PowerShell. Você pode usar o parâmetro ComputerName mesmo que o computador não esteja configurado para executar comandos remotos.
Tipo: | String[] |
Aliases: | Cn |
Position: | Named |
Default value: | None |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | False |
-Continuous
Quando contínuo é especificado, Get-Counter
obtém amostras até que você pressione CTRL+C. As amostras são obtidas a cada segundo para cada contador de desempenho especificado. Use o parâmetro SampleInterval para aumentar o intervalo entre amostras contínuas.
Tipo: | SwitchParameter |
Position: | Named |
Default value: | None |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | False |
-Counter
Especifica o caminho para um ou mais caminhos de contador. Os caminhos são inseridos como uma matriz separada por vírgula, uma variável ou valores de um arquivo de texto. Você pode enviar cadeias de caracteres de caminho de contador pelo pipeline para Get-Counter
.
Os caminhos de contador usam a seguinte sintaxe:
\\ComputerName\CounterSet(Instance)\CounterName
\CounterSet(Instance)\CounterName
Por exemplo:
\\Server01\Processor(*)\% User Time
\Processor(*)\% User Time
O \\ComputerName
é opcional num caminho de contagem de desempenho. Se o caminho do contador não incluir o nome do computador, Get-Counter
usará o computador local.
Um asterisco (*
) na instância é um caractere curinga que serve para recolher todas as instâncias do contador.
Tipo: | String[] |
Position: | 0 |
Default value: | None |
Necessário: | False |
Aceitar entrada de pipeline: | True |
Aceitar carateres universais: | True |
-ListSet
Lista os conjuntos de contadores de desempenho nos computadores. Use um asterisco (*
) para especificar todos os conjuntos de contadores. Insira um nome ou uma lista separada por vírgulas de nomes de conjuntos de contadores. Você pode enviar nomes de conjuntos de contadores pelo pipeline.
Para obter um conjunto de contadores com caminhos formatados, use o parâmetro ListSet. As propriedades Caminhos e CaminhosComInstâncias de cada conjunto de contadores contêm os caminhos de contadores individuais formatados como uma cadeia de caracteres.
Você pode salvar as cadeias de caracteres do caminho do contador em uma variável ou usar o pipeline para enviar a cadeia de caracteres para outro comando Get-Counter
.
Por exemplo, para enviar a cada processador caminho do contador para Get-Counter
:
Get-Counter -ListSet Processor | Get-Counter
Observação
No PowerShell 7, Get-Counter
não pode recuperar a propriedade Description do conjunto de contadores. A Descrição está definida como $null
.
Tipo: | String[] |
Position: | 0 |
Default value: | None |
Necessário: | True |
Aceitar entrada de pipeline: | True |
Aceitar carateres universais: | True |
-MaxSamples
Especifica o número de amostras a serem obtidas de cada contador de desempenho especificado. Para obter um fluxo constante de amostras, use o parâmetro Continuous.
Se o parâmetro MaxSamples não for especificado, Get-Counter
receberá apenas uma amostra para cada contador especificado.
Para coletar um conjunto de dados grande, execute Get-Counter
como um trabalho em segundo plano do PowerShell. Para obter mais informações, consulte sobre_empregos.
Tipo: | Int64 |
Position: | Named |
Default value: | None |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | False |
-SampleInterval
Especifica o número de segundos entre amostras para cada contador de desempenho especificado. Se o parâmetro SampleInterval não for especificado, Get-Counter
usará um intervalo de um segundo.
Tipo: | Int32 |
Position: | Named |
Default value: | None |
Necessário: | False |
Aceitar entrada de pipeline: | False |
Aceitar carateres universais: | False |
Entradas
String[]
Get-Counter
aceita entrada de pipeline para caminhos de contador e nomes de conjuntos de contadores.
Saídas
Com o parâmetro ListSet, esse cmdlet retorna objetos CounterSet.
Por defeito e com o parâmetro Counter, este cmdlet retorna objetos PerformanceCounterSampleSet.
Notas
Se nenhum parâmetro for especificado, Get-Counter
obterá uma amostra para cada contador de desempenho especificado. Use os parâmetros MaxSamples e Continuous para obter mais amostras.
Get-Counter
usa um intervalo de um segundo entre as amostras. Use o parâmetro SampleInterval para aumentar o intervalo.
Os valores MaxSamples e SampleInterval aplicam-se a todos os contadores em cada computador no comando. Para definir valores diferentes para contadores diferentes, insira comandos Get-Counter
separados.
No PowerShell 7, ao usar o parâmetro ListSet, Get-Counter
não pode recuperar a propriedade Description do conjunto de contadores. A Descrição está definida como $null
.