HOWTO · PowerShell
Como obter a lista de processos em execução no PowerShell
Use o Get-Process do PowerShell para listar processos locais, filtrar por nome, inspecionar propriedades de processos e solicitar a conta associada no Windows.
Nesta página
Use Get-Process para listar os processos em execução no computador local, restringir os resultados por nome do processo e inspecionar valores como Id e CPU. Os exemplos abaixo são comandos do PowerShell e não foram executados nas evidências de runtime fornecidas. Os nomes dos processos e os valores exibidos dependem do que está em execução no seu computador e do ambiente do PowerShell.
Listar todos os processos em execução com Get-Process
Execute Get-Process sem argumentos para obter objetos de processo dos processos locais. O PowerShell formata esses objetos para exibição, geralmente como uma tabela. A exibição padrão pode incluir campos como Id (o identificador do processo), ProcessName, CPU (tempo acumulado de processador em segundos) e valores relacionados à memória. As colunas exibidas são uma exibição, não uma lista completa ou fixa de todas as propriedades dos processos; as colunas e os valores podem variar conforme o ambiente. gps é um alias opcional de Get-Process.
Este exemplo seleciona um pequeno conjunto de campos úteis dos dez primeiros objetos de processo retornados:
Get-Process | Select-Object -First 10 Id, ProcessName, CPU, WorkingSet64
Encontrar processos por nome
Passe um nome de processo para -Name para filtrar os resultados. Substitua o nome selecionado por um que esteja em execução no seu computador. Você pode passar um array de nomes para obter correspondências de vários processos, ou usar caracteres curinga como * para corresponder a um padrão de nome. O exemplo deriva os nomes de processos presentes no computador atual, de modo que não depende de um aplicativo específico estar instalado:
$names = @(Get-Process | Select-Object -First 2 -ExpandProperty ProcessName | Sort-Object -Unique)
if ($names.Count -gt 0) {
Get-Process -Name $names
$prefix = $names[0].Substring(0, [Math]::Min(2, $names[0].Length))
Get-Process -Name "$prefix*"
}
Get-Process -Name pode retornar mais de um processo quando várias instâncias correspondem a um nome. Os curingas são úteis quando você conhece apenas parte do nome de um processo. Se a sua própria consulta não retornar correspondências, verifique a ortografia e se esse processo está em execução no momento.
Ler propriedades de processos
Get-Process retorna objetos, portanto você pode ler uma propriedade diretamente em vez de depender da tabela formatada. Id é o identificador do processo. CPU relata o tempo acumulado de processador em segundos quando esse valor está disponível; não é uma medição percentual em tempo real. Um nome pode corresponder a vários objetos de processo, portanto o acesso à propriedade pode produzir vários valores. Este exemplo lê ambas as propriedades de um processo encontrado no computador local:
$process = Get-Process | Select-Object -First 1
if ($process) {
$process.Id
$process.CPU
}
Use Select-Object Id, CPU após um filtro por nome quando quiser que esses campos sejam exibidos juntos para cada processo correspondente. A lista de processos é um instantâneo, portanto um processo pode iniciar ou parar entre comandos separados.
Exibir o proprietário do processo
No Windows, adicione -IncludeUserName para solicitar a conta associada a cada processo retornado. O valor da conta é exposto como UserName; não é uma propriedade ProcessOwner. O acesso às informações da conta pode depender das permissões e do processo. Esta opção é específica da plataforma, portanto use-a em um ambiente Windows PowerShell que a suporte. Identificar uma conta é útil para a solução de problemas, mas não é necessário simplesmente para encerrar um processo.
O exemplo escolhe um processo atualmente presente no computador e captura um erro de pesquisa como texto se a conta não puder ser recuperada:
$process = Get-Process | Select-Object -First 1
if ($process) {
try {
Get-Process -Id $process.Id -IncludeUserName | Select-Object Id, ProcessName, UserName
}
catch {
"Could not retrieve UserName: $($_.Exception.Message)"
}
}