Como Encontrar o Uso da CPU e da RAM Usando o PowerShell
-
Como Encontrar o Uso de CPU e RAM Usando PowerShell Usando
Get-Counter
-
Como Encontrar o Uso de CPU e RAM Usando PowerShell Usando
Get-WmiObject
-
Como Encontrar o Uso de CPU e RAM Usando PowerShell Usando
Get-Process
- Conclusão

À medida que a tecnologia avança, a necessidade de um monitoramento eficiente do sistema torna-se cada vez mais crucial. Administradores do Windows e usuários frequentemente se encontram em busca de maneiras rápidas e eficazes de avaliar o uso de CPU e RAM para um desempenho ótimo do sistema em suas máquinas Windows.
Neste artigo, exploraremos o poder do PowerShell, uma linguagem de script versátil no ambiente Windows, e descobriremos como ela pode ser usada para encontrar e monitorar o uso de CPU e RAM de forma integrada.
Ao utilizar as capacidades do PowerShell, os usuários podem obter insights em tempo real sobre o uso da memória de seus sistemas, capacitando-os a tomar decisões informadas e garantir uma experiência de computação suave.
Como Encontrar o Uso de CPU e RAM Usando PowerShell Usando Get-Counter
O PowerShell, com seus cmdlets poderosos, oferece uma solução robusta para recuperar dados de desempenho em tempo real. Um desses cmdlets, Get-Counter
, fornece uma maneira versátil e eficiente de acessar essas informações.
O cmdlet Get-Counter
permite recuperar dados de contadores de desempenho de máquinas locais ou remotas. Para monitorar o uso de CPU e RAM, podemos usar caminhos de contadores de desempenho específicos.
Aqui está a sintaxe básica:
Get-Counter -Counter "\CounterPath"
Para uso de CPU, o caminho do contador é '\Processor(_Total)\% Processor Time'
, e para uso de RAM, é '\Memory\Available MBytes'
.
Exemplo de Código para Encontrar o Uso de CPU e Memória Usando Get-Counter
Vamos mergulhar em um exemplo de código completo que demonstra como usar Get-Counter
para monitorar tanto o uso de CPU quanto de RAM:
# PowerShell get memory usage
Get-Counter '\Processor(_Total)\% Processor Time' -Continuous | ForEach-Object {
$cpuUsage = $_.CounterSamples.CookedValue
Write-Host "Current CPU Usage: $cpuUsage%"
}
Get-Counter '\Memory\Available MBytes' -Continuous | ForEach-Object {
$ramUsage = $_.CounterSamples.CookedValue
Write-Host "Available RAM: ${ramUsage}MB"
}
Vamos analisar cada seção do código para entender sua funcionalidade.
Monitorando o Uso de CPU:
Get-Counter '\Processor(_Total)\% Processor Time' -Continuous | ForEach-Object {
$cpuUsage = $_.CounterSamples.CookedValue
Write-Host "Current CPU Usage: $cpuUsage%"
}
Na primeira parte, usamos Get-Counter
para recuperar dados em tempo real sobre a porcentagem do tempo total do processador utilizado. O caminho do contador especificado, '\Processor(_Total)\% Processor Time'
, visa o uso total da CPU em todos os núcleos.
O parâmetro -Continuous
garante que o comando seja executado continuamente, fornecendo atualizações ao vivo, e só para quando CTRL+C é pressionado.
A saída do Get-Counter
é então passada por um loop ForEach-Object
. Para cada amostra de contador recebida, o script extrai o valor processado (CookedValue
), que representa a porcentagem atual de uso da CPU.
Esse valor é armazenado na variável $cpuUsage
, e uma mensagem exibindo o uso atual da CPU é impressa no console usando a função do PowerShell Write-Host
.
Saída do Código:
Monitorando o Uso de Memória (RAM):
Get-Counter '\Memory\Available MBytes' -Continuous | ForEach-Object {
$ramUsage = $_.CounterSamples.CookedValue
Write-Host "Available RAM: ${ramUsage}MB"
}
A segunda parte do script foca em monitorar a porcentagem de memória. Semelhante à seção de CPU, usamos Get-Counter
com o caminho do contador '\Memory\Available MBytes'
para recuperar continuamente dados sobre a memória disponível em megabytes.
O parâmetro -Continuous
garante o monitoramento contínuo.
Novamente, a saída é processada em um loop ForEach-Object
. Para cada amostra de contador recebida, o script extrai o valor processado que representa os bytes disponíveis na RAM, que é armazenado na variável $ramUsage
.
O passo final envolve exibir as informações de RAM disponível no console usando Write-Host
.
Saída do Código:
Essa exibição em tempo real de informações é inestimável para administradores de sistema e usuários, permitindo-lhes identificar e resolver problemas de desempenho rapidamente. O Get-Counter
simplifica o processo de monitoramento do uso de CPU e RAM, tornando-se uma ferramenta essencial no arsenal do PowerShell.
Como Encontrar o Uso de CPU e RAM Usando PowerShell Usando Get-WmiObject
Além do cmdlet Get-Counter
, o PowerShell oferece outra ferramenta poderosa, Get-WmiObject
, para coletar informações do sistema, incluindo uso de CPU e RAM.
O Get-WmiObject
cmdlet permite o acesso a classes de Instrumentação de Gestão do Windows (WMI), fornecendo uma riqueza de informações sobre o sistema. Para monitorar o uso de CPU e memória física, classes e propriedades WMI específicas são consultadas.
A sintaxe básica é a seguinte:
Get-WmiObject -Class WMI_Class | Select-Object Property1, Property2, ...
Para uso de CPU, usamos a classe Win32_Processor
, e para uso de RAM ou memória física, usamos a classe Win32_OperatingSystem
.
Exemplo de Código para Encontrar o Uso de CPU e RAM Usando Get-WmiObject
Vamos explorar um exemplo de código completo que demonstra como usar Get-WmiObject
para monitorar tanto o uso de CPU quanto de RAM:
# PowerShell get memory usage of all the processes
$cpuObject = Get-WmiObject -Class Win32_Processor
$cpuLoadPercentage = $cpuObject.LoadPercentage
Write-Host "CPU Load Percentage: $cpuLoadPercentage"
$ramObject = Get-WmiObject -Class Win32_OperatingSystem
$ramUsageGB = [math]::Round(($ramObject.TotalVisibleMemorySize - $ramObject.FreePhysicalMemory) / 1GB, 2)
Write-Host "Available RAM: ${ramUsageGB}GB"
Vamos analisar cada seção do script PowerShell acima para entender sua funcionalidade.
Monitorando o Uso de CPU:
$cpuObject = Get-WmiObject -Class Win32_Processor
$cpuLoadPercentage = $cpuObject.LoadPercentage
Write-Host "CPU Load Percentage: $cpuLoadPercentage"
Aqui, o script primeiro utiliza Get-WmiObject
para consultar informações da classe Win32_Processor
, que contém detalhes sobre o processador do sistema. As informações obtidas são armazenadas na variável $cpuObject
.
Em seguida, o script extrai a propriedade LoadPercentage
de $cpuObject
, que representa a porcentagem atual de carga da CPU. Esse valor é então armazenado na variável $cpuLoadPercentage
.
Finalmente, uma mensagem exibindo a porcentagem de carga da CPU é impressa no console usando Write-Host
.
Saída do Código:
Monitorando o Uso de Memória (RAM):
$ramObject = Get-WmiObject -Class Win32_OperatingSystem
$ramUsageGB = [math]::Round(($ramObject.TotalVisibleMemorySize - $ramObject.FreePhysicalMemory) / 1GB, 2)
Write-Host "Available RAM: ${ramUsageGB}GB"
Na seção de monitoramento de RAM, o script utiliza Get-WmiObject
para obter informações da classe Win32_OperatingSystem
, que contém várias propriedades relacionadas ao sistema operacional, incluindo detalhes sobre a memória. As informações adquiridas são armazenadas na variável $ramObject
.
Em seguida, o script calcula a RAM disponível em gigabytes subtraindo a memória física livre (FreePhysicalMemory
) da memória física total ou do tamanho total da memória visível (TotalVisibleMemorySize
). O resultado é então arredondado para duas casas decimais usando [math]::Round
para garantir uma saída mais limpa.
O valor da RAM disponível em gigabytes é armazenado na variável $ramUsageGB
. Finalmente, uma mensagem exibindo a RAM disponível é impressa no console usando Write-Host
.
Saída do Código:
Essas informações, recuperadas usando o cmdlet Get-WmiObject
, fornecem insights valiosos sobre o desempenho do sistema, permitindo que os usuários monitorem efetivamente a utilização de recursos e tomem decisões informadas para a otimização do sistema. A simplicidade e clareza do script o tornam uma ferramenta versátil para administradores e usuários.
Como Encontrar o Uso de CPU e RAM Usando PowerShell Usando Get-Process
Como parte de nossa exploração do monitoramento do desempenho do sistema com PowerShell, agora nos concentraremos no cmdlet Get-Process
. Ao contrário de Get-Counter
e Get-WmiObject
, Get-Process
fornece informações sobre processos em execução na máquina local, permitindo-nos extrair detalhes da porcentagem de CPU e memória.
O cmdlet Get-Process
recupera informações sobre os processos atualmente em execução em um computador local ou remoto. Para monitorar o uso de CPU e RAM, filtraremos e extrairemos informações relevantes da saída.
A sintaxe básica é a seguinte:
Get-Process -Name "ProcessName" | Select-Object Property1, Property2, ...
Para o uso de CPU, nos concentraremos na propriedade CPU
, e para o uso de RAM, na propriedade WorkingSet
.
Exemplo de Código para Encontrar o Uso de CPU e RAM Usando Get-Process
Vamos explorar um exemplo de código completo que demonstra como usar Get-Process
para monitorar tanto o uso de CPU quanto de RAM:
# PowerShell get memory usage
$cpuProcesses = Get-Process | Sort-Object CPU -Descending | Select-Object -First 5
ForEach ($process in $cpuProcesses) {
$processName = $process.ProcessName
$cpuUsage = $process.CPU
Write-Host "Process: $processName, CPU Usage: $cpuUsage%"
}
$ramProcesses = Get-Process | Sort-Object WorkingSet -Descending | Select-Object -First 5
ForEach ($process in $ramProcesses) {
$processName = $process.ProcessName
$ramUsageMB = [math]::Round($process.WorkingSet / 1MB, 2)
Write-Host "Process: $processName, RAM Usage: ${ramUsageMB}MB"
}
Semelhante aos exemplos anteriores, este script PowerShell também está organizado em duas seções: uma focando no uso de CPU e a outra no uso de RAM. Vamos analisar cada seção do código.
Monitorando o Uso de CPU:
$cpuProcesses = Get-Process | Sort-Object CPU -Descending | Select-Object -First 5
ForEach ($process in $cpuProcesses) {
$processName = $process.ProcessName
$cpuUsage = $process.CPU
Write-Host "Process: $processName, CPU Usage: $cpuUsage%"
}
Na primeira seção do código, o script começa usando Get-Process
para recuperar informações sobre todos os processos em execução no sistema. A saída é então ordenada em ordem decrescente com base no uso de CPU usando Sort-Object
.
O Select-Object -First 5
garante que apenas os 5 principais processos com o maior uso de CPU sejam considerados. Os processos resultantes são armazenados na variável $cpuProcesses
.
Um ForEach loop
é empregado para iterar por cada objeto de processo em $cpuProcesses
. Para cada processo, o script extrai o nome do processo (ProcessName
) e o uso da CPU (CPU
).
Essas informações são então exibidas no console usando Write-Host
, apresentando o nome do processo junto com sua porcentagem de uso da CPU correspondente.
Saída do Código:
Monitorando o Uso de Memória (RAM):
$ramProcesses = Get-Process | Sort-Object WorkingSet -Descending | Select-Object -First 5
ForEach ($process in $ramProcesses) {
$processName = $process.ProcessName
$ramUsageMB = [math]::Round($process.WorkingSet / 1MB, 2)
Write-Host "Process: $processName, RAM Usage: ${ramUsageMB}MB"
}
Na segunda seção do código, uma abordagem semelhante é adotada. Novamente, Get-Process
é usado para reunir informações sobre todos os processos em execução.
A saída é então ordenada com base no uso de RAM (WorkingSet
) em ordem decrescente, e apenas os 5 principais processos em execução são selecionados. Os processos resultantes são armazenados na variável $ramProcesses
.
Um ForEach
loop itera por cada processo em $ramProcesses
. Para cada processo, o script extrai o nome do processo e calcula o uso de RAM em megabytes.
O cálculo envolve dividir o tamanho do conjunto de trabalho por 1 megabyte e arredondar o resultado para duas casas decimais usando [math]::Round
. As informações são então exibidas no console usando Write-Host
, apresentando o nome do processo junto com seu uso correspondente de RAM em megabytes.
Saída do Código:
Este script fornece uma abordagem dinâmica para monitorar o uso de CPU e memória, focando nos processos que consomem mais recursos. Ao aproveitar as capacidades do Get-Process
, administradores e usuários podem obter insights sobre atividades que consomem muitos recursos em seus sistemas.
Conclusão
Monitorar o uso de CPU e RAM é essencial para manter um ambiente de computação saudável e responsivo. O PowerShell, com seu rico conjunto de cmdlets, fornece ferramentas poderosas como Get-Counter
, Get-WmiObject
e Get-Process
para simplificar esse processo.
Seja preferindo atualizações em tempo real, informações detalhadas de classes WMI ou insights sobre processos individuais, o PowerShell oferece soluções flexíveis para atender a diversas necessidades de monitoramento. Ao incorporar essas técnicas em seu kit de ferramentas de gerenciamento de sistema, você pode se manter informado sobre o uso de CPU e RAM, permitindo intervenções oportunas e otimização proativa do sistema.