Como Encontrar o Uso da CPU e da RAM Usando o PowerShell

  1. Como Encontrar o Uso de CPU e RAM Usando PowerShell Usando Get-Counter
  2. Como Encontrar o Uso de CPU e RAM Usando PowerShell Usando Get-WmiObject
  3. Como Encontrar o Uso de CPU e RAM Usando PowerShell Usando Get-Process
  4. Conclusão
Como Encontrar o Uso da CPU e da RAM Usando o PowerShell

À 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:

porcentagem de memória do powershell

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:

powershell obter uso de memória

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:

uso total de memória do powershell

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:

memória livre do powershell

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:

percentagem de memória do powershell

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:

uso de memória do powershell

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.

Está gostando dos nossos tutoriais? Inscreva-se no DelftStack no YouTube para nos apoiar na criação de mais vídeos tutoriais de alta qualidade. Inscrever-se
Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website