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, o- Get-Processrecupera 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 o- Get-Process.
- NameOfTheComputer string[]: Indica o(s) nome(s) dos computadores em que executar o comando. Se este parâmetro for omitido, o- Get-Processrecupera 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,- -OutBuffere- -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. O- PIDé 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 significa- Paged Memoryem 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.
