Como obter a lista de processos em execução no PowerShell

Este artigo explora a utilização do PowerShell para monitoramento de processos, enfatizando o cmdlet Get-Process
. O cmdlet Get-Process
, um elemento básico na gestão de processos, oferece uma visão abrangente dos processos em execução em uma máquina Windows, exibindo informações críticas como IDs de processo, nomes, uso de memória e consumo de CPU.
O artigo desdobra metódicamente a sintaxe e os parâmetros do cmdlet, atendendo a consultas de processos gerais e específicas.
Use o cmdlet Get-Process
para mostrar uma lista de processos em execução no PowerShell
Existem mais de 200 cmdlets disponíveis no ambiente PowerShell. Cada cmdlet é responsável por realizar uma função específica.
O Get-Process
é um dos cmdlets frequentemente utilizados que ajuda a recuperar a lista de processos em execução na máquina Windows.
Este cmdlet fornece informações úteis relacionadas a cada processo, como ID do processo, nome, uso de memória, etc. Além disso, ele mostra uma instantânea dos processos em execução do sistema.
Sintaxe:
Get-Process [[-ProcessName] string[]] [-NameOfTheComputer string[]]
[-FileVersionInfo] [-Module] [CommonParameters]
Get-Process -processID Int32[] [-ComputerName string[]]
[-FileVersionInfo] [-Module] [CommonParameters]
Get-Process -ProcessInputObject Process[] [-ComputerName string[]]
[-FileVersionInfo] [-Module] [CommonParameters]
Parâmetros:
ProcessName string[
]: Especifica uma matriz de nomes de processos a serem recuperados. Este parâmetro aceita caracteres curinga para correspondência de padrões. Se este parâmetro for omitido, oGet-Process
recupera todos os processos.ProcessId Int32[]
: Especifica os IDs dos processos a serem recuperados. Este parâmetro permite que você direcione processos específicos diretamente.InputObject Process[]
: Especifica uma matriz de objetos de processo. Este parâmetro permite que você transfira objetos de processo para oGet-Process
.NameOfTheComputer string[]
: Indica o(s) nome(s) dos computadores em que executar o comando. Se este parâmetro for omitido, oGet-Process
recupera processos do computador local.FileVersionInfo
: Adiciona informações da versão do arquivo aos objetos de processo. Isso é útil quando você deseja detalhes sobre o arquivo executável do processo, como versão, nome do produto, etc.Module
: Inclui os módulos (DLLs e arquivos executáveis) que estão carregados por cada processo. Isso é útil para uma análise mais detalhada, como verificar quais DLLs estão carregadas por um processo.[CommonParameters]
: Estes são os parâmetros que todos os cmdlets suportam, como-Verbose
,-Debug
,-ErrorAction
,-ErrorVariable
,-OutVariable
,-OutBuffer
e-PipelineVariable
.
Os parâmetros são opcionais para o cmdlet Get-Process
, e você pode usar esses parâmetros com base em suas necessidades.
Exibir Todos os Processos em Execução
Podemos usar diretamente o comando Get-Process
sem parâmetros. Ele deve exibir todos os processos em execução naquele momento.
Além disso, o alias gps
pode ser usado em vez do comando Get-Process
.
Get-Process
gps
Saída:
Ao executar Get-Process
ou gps
, o PowerShell inicia uma consulta em todo o sistema para coletar informações sobre todos os processos ativos. A ausência de parâmetros nesses comandos sinaliza ao PowerShell para não aplicar filtros e recuperar detalhes de cada processo.
O PowerShell então coleta dados detalhados sobre cada processo em execução. Esses dados incluem vários atributos que descrevem o estado e as características desses processos.
O PowerShell formata isso em uma tabela para exibição. Este formato tabular é projetado para apresentar as informações de maneira clara e legível.
A tabela geralmente inclui várias colunas principais:
Id
: Esta coluna mostra o Identificador do Processo (PID
), uma etiqueta numérica única atribuída a cada processo. OPID
é crucial para identificar e gerenciar processos específicos.ProcessName
: Este é o nome do arquivo executável que iniciou o processo. Isso ajuda a reconhecer facilmente o processo, especialmente para aplicações bem conhecidas.CPU(s)
: Aqui, vemos a quantidade de tempo de CPU que o processo consumiu. Isso é medido em segundos e é vital para avaliar quais processos estão usando recursos significativos de CPU, potencialmente impactando o desempenho do sistema.PM(K)
: Isso significaPaged Memory
em Kilobytes. Representa o tamanho da memória que o processo está utilizando que pode ser paginada para o disco. Essa métrica é importante para monitorar o uso da memória dos processos, o que é crucial para ajuste de desempenho e gerenciamento de recursos.
Recuperar as Informações de um Único Processo
Ao usar o PowerShell para recuperar informações sobre um processo específico, temos algumas opções de sintaxe. Tanto Get-Process -Name processName
quanto Get-Process processName
são válidos e alcançam o mesmo resultado, mas diferem ligeiramente em sua estrutura de sintaxe.
Get-Process -Name typora
OU
Get-Process typora
Quando executamos Get-Process -Name typora
ou Get-Process typora
, o PowerShell filtra os processos em execução e retorna informações especificamente para o processo chamado typora
. Isso é particularmente útil quando sabemos o nome exato do processo que nos interessa.
Nos bastidores, o PowerShell procura na lista de todos os processos e corresponde o nome do processo com typora
. Se o processo estiver em execução, seus detalhes são exibidos.
Saída:
Recuperar as Informações para Vários Processos
Quando usamos o cmdlet Get-Process
no PowerShell para recuperar informações de vários processos, como no comando Get-Process NotePad, Outlook
, estamos aproveitando a capacidade do PowerShell de lidar com múltiplos itens simultaneamente.
Get-Process NotePad, Outlook
Ao executar Get-Process NotePad, Outlook
, instruímos o PowerShell a buscar detalhes para múltiplos processos simultaneamente, neste caso, NotePad
e Outlook
. Este comando é útil quando precisamos monitorar vários processos específicos.
O PowerShell executa uma operação semelhante ao comando de processo único, mas para cada nome de processo especificado, exibindo todas as correspondências.
Saída:
Além disso, você pode usar caracteres curinga para o nome do processo.
Recuperar Objetos de Processo com os Atributos Dado
Podemos exibir informações do objeto de processo para atributos específicos quando necessário. Vamos recuperar apenas o ID do Processo
para o processo NotePad
.
(Get-Process NotePad).Id
No comando (Get-Process NotePad).Id
, primeiro obtemos o objeto de processo para NotePad
e depois acessamos sua propriedade Id
. Essa técnica é útil quando estamos interessados apenas em informações específicas sobre um processo, como seu ID do Processo
.
Saída:
Além disso, podemos recuperar o atributo de tempo de CPU para o processo NotePad
, conforme mostrado a seguir.
(Get-Process NotePad).CPU
Da mesma forma, (Get-Process NotePad).CPU
recupera as informações de uso de CPU para o processo NotePad
. Esses comandos demonstram como podemos extrair pontos de dados particulares dos objetos de processo.
Saída:
Exibir o Proprietário do Processo
A saída padrão do comando Get-Process
não exibe o atributo ProcessOwner
. Mas isso pode ser uma informação valiosa quando você precisa terminar um determinado processo.
Podemos usar o parâmetro -IncludeUserName
para incluir o atributo ProcessOwner
na saída.
Get-Process -Name notepad -IncludeUserName
O comando Get-Process -Name notepad -IncludeUserName
estende o comportamento padrão do Get-Process
incluindo o nome de usuário do proprietário do processo na saída. O parâmetro -IncludeUserName
é essencial quando precisamos identificar qual usuário está executando um processo específico, o que pode ser crítico em ambientes multiusuário ou para solução de problemas.
Este comando melhora nossa visibilidade sobre os processos, especialmente em relação à sua propriedade.
Saída:
Conclusão
Este guia abrangente iluminou o poder e a versatilidade do PowerShell na gestão e monitoramento de processos do sistema. Nós viajamos pelas aplicações práticas do cmdlet Get-Process
, começando pela listagem de todos os processos em execução até a identificação de processos específicos e a exploração da extração de atributos específicos do processo.
O artigo também mostrou a destreza do PowerShell em lidar com múltiplos processos simultaneamente e a facilidade de integrar informações centradas no usuário, como a propriedade do processo.
Essa integração do cmdlet Get-Process
sublinha a robustez e adaptabilidade do PowerShell no âmbito da gestão de processos, oferecendo um espectro de ferramentas para administradores de sistema monitorarem, analisarem e gerenciarem processos de forma eficaz dentro de um ambiente Windows.
Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.