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)"
    }
}