Compartilhar via


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 na família Windows de sistemas operacionais. Get-Counter obtém dados de desempenho de um computador local ou 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 exemplo e especificar o número máximo de amostras. Sem parâmetros, Get-Counter obtém dados de contador de desempenho para um conjunto de contadores do sistema.

Muitos conjuntos de contadores são protegidos por ACL (listas de controle de acesso). Para ver todos os conjuntos de contadores, abra o PowerShell com a opção Executar como administrador.

Este cmdlet foi reintroduzido no PowerShell 7.

Nota

Os nomes dos contadores de desempenho são localizados. 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: Especificar o SampleInterval e MaxSamples

Esses exemplos 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 exemplos.

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 são o número máximo de vezes para verificar o contador.

Exemplo 3: Obter exemplos contínuos de um contador

Esses exemplos obtém exemplos contínuos para um contador a cada segundo. Para interromper o comando, pressione CTRL+C. Para especificar um intervalo mais longo entre exemplos, 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 parâmetro Counter para especificar o contador de \Processor\% Processor Time. O parâmetro Contínua especifica 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 usa o pipeline para obter o conjunto de lista de contadores e, em seguida, classificar a lista em 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 do CounterSet são enviados pelo pipeline. Sort-Object usa o parâmetro Property para especificar que os objetos são classificados por CounterSetName. Os objetos são enviados pelo pipeline para Format-Table. O parâmetro AutoSize ajusta as larguras da coluna para minimizar o truncamento.

O ponto (.) na coluna MachineName representa o computador local.

Exemplo 5: executar um trabalho em segundo plano para obter dados de 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 de contador de vários computadores

Este exemplo usa uma variável para obter dados de 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 parâmetro de primeira 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 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 de computador 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 de 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 no arquivo Servers.txt. Os nomes de computador remoto 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: Usar a propriedade Path para obter nomes de caminho formatados

Este exemplo usa a propriedade Path de um contador definido para localizar os nomes de caminho formatados para os contadores de desempenho.

O pipeline é usado com o cmdlet Where-Object para localizar um subconjunto dos nomes de caminho. Para localizar uma lista completa de caminhos de contador de conjuntos de contadores, remova o pipeline (|) e Where-Object comando.

O $_ é uma variável automática para o objeto atual no pipeline. Para obter mais informações, confira 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 Caminhos retorne cada caminho como uma cadeia de caracteres. Os objetos são enviados pelo pipeline para Where-Object. Where-Object usa a variável $_ para processar cada objeto e usa o operador -like para localizar correspondências para a cadeia de caracteres *Cache*. Os asteriscos (*) são curingas para qualquer caractere.

Exemplo 9: Usar a propriedade PathsWithInstances para obter nomes de caminho formatados

Este exemplo obtém os nomes de caminho formatado 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 instâ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 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 Caminhos 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 de contador na variável $MemCounters.

Exemplo 11: Exibir valores de propriedade de um objeto

Os valores de propriedade no objeto PerformanceCounterSample representam cada exemplo 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 propriedade usa um curinga asterisco (*) para selecionar todas as propriedades.

Exemplo 12: Valores de matriz de 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 exibir cada exemplo 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 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 contador de desempenho

Este exemplo localiza a quantidade de tempo do processador usada por cada processador no computador local. A propriedade CounterSamples é usada para comparar os dados do contador com um valor especificado.

Para exibir cada exemplo 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 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 o valor de cada objeto 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 dados de contador de desempenho. O exemplo localiza os processos no computador que estão usando o maior 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 no pipeline. Sort-Object usa o parâmetro propriedade para classificar os objetos CookedValue em ordem de decrescente. Format-Table usa o parâmetro Property para selecionar as colunas para a saída. O parâmetro AutoSize ajusta as larguras da coluna para minimizar o truncamento.

Parâmetros

-ComputerName

Especifica um nome de computador ou uma matriz separada por vírgulas de nomes remotos de computador. 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 a saída, como um ListSet que contém a coluna machinename, um ponto (.) indica o computador local.

Get-Counter não depende da comunicação remota do PowerShell. Você pode usar o parâmetro ComputerName mesmo se o computador não estiver configurado para executar comandos remotos.

Tipo:String[]
Aliases:Cn
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-Continuous

Quando contínua é especificado, Get-Counter obtém amostras até pressionar ctrl+C. Os exemplos são obtidos a cada segundo para cada contador de desempenho especificado. Use o parâmetro SampleInterval para aumentar o intervalo entre amostras contínuas.

Tipo:SwitchParameter
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-Counter

Especifica o caminho para um ou mais caminhos de contador. Os caminhos são inseridos como uma matriz separada por vírgulas, 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 em um caminho de contador 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 para obter todas as instâncias do contador.

Tipo:String[]
Cargo:0
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:True
Aceitar caracteres curinga: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 cadeia de caracteres separada por vírgulas de nomes de conjunto de contadores. Você pode enviar nomes de conjunto de contadores para baixo do pipeline.

Para obter um contador define caminhos de contador formatados, use o parâmetro ListSet. Os caminhos e pathsWithInstances propriedades de cada conjunto de contadores contêm os caminhos de contador individuais formatados como uma cadeia de caracteres.

Você pode salvar as cadeias de caracteres de 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 cada o caminho do contador de do Processador para Get-Counter:

Get-Counter -ListSet Processor | Get-Counter

Nota

No PowerShell 7, Get-Counter não pode recuperar a propriedade Description do conjunto de contadores. O de Descrição do está definido como $null.

Tipo:String[]
Cargo:0
Valor padrão:None
Obrigatório:True
Aceitar a entrada de pipeline:True
Aceitar caracteres curinga:True

-MaxSamples

Especifica o número de exemplos a serem obtidos de cada contador de desempenho especificado. Para obter um fluxo constante de exemplos, use o parâmetro Contínua.

Se o parâmetro MaxSamples não for especificado, Get-Counter só obterá 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 about_Jobs.

Tipo:Int64
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-SampleInterval

Especifica o número de segundos entre exemplos 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
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

Entradas

String[]

Get-Counter aceita entrada de pipeline para caminhos de contador e nomes de conjunto de contadores.

Saídas

CounterSet

Com o parâmetro ListSet, esse cmdlet retorna objetos CounterSet.

PerformanceCounterSampleSet

Por padrão e com o parâmetro Counter, esse cmdlet retorna objetos PerformanceCounterSampleSet.

Observações

Se nenhum parâmetro for especificado, Get-Counter obterá um exemplo para cada contador de desempenho especificado. Use os parâmetros MaxSamples e Contínuo para obter mais exemplos.

Get-Counter usa um intervalo de um segundo entre amostras. Use o parâmetro SampleInterval para aumentar o intervalo.

Os valores de MaxSamples e SampleInterval se aplicam 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 é possível recuperar a propriedade Description do conjunto de contadores. O de Descrição do está definido como $null.