Partilhar via


Get-Process

Obtém os processos que estão sendo executados no computador local ou em um computador remoto.

Sintaxe

Name (Predefinição)

Get-Process
    [[-Name] <String[]>]
    [-ComputerName <String[]>]
    [-Module]
    [-FileVersionInfo]
    [<CommonParameters>]

NameWithUserName

Get-Process
    [[-Name] <String[]>]
    [-IncludeUserName]
    [<CommonParameters>]

IdWithUserName

Get-Process
    -Id <Int32[]>
    [-IncludeUserName]
    [<CommonParameters>]

Id

Get-Process
    -Id <Int32[]>
    [-ComputerName <String[]>]
    [-Module]
    [-FileVersionInfo]
    [<CommonParameters>]

InputObjectWithUserName

Get-Process
    -InputObject <Process[]>
    [-IncludeUserName]
    [<CommonParameters>]

InputObject

Get-Process
    -InputObject <Process[]>
    [-ComputerName <String[]>]
    [-Module]
    [-FileVersionInfo]
    [<CommonParameters>]

Description

O cmdlet Get-Process obtém os processos em um computador local ou remoto.

Sem parâmetros, esse cmdlet obtém todos os processos no computador local. Você também pode especificar um processo específico pelo nome do processo ou ID do processo (PID) ou canalizando um objeto System.Diagnostics.Process para este cmdlet.

Por padrão, esse cmdlet retorna um objeto Process que tem informações detalhadas sobre o processo e oferece suporte a métodos que permitem controlá-lo. Com parâmetros, você pode alterar o tipo de informações retornadas por esse cmdlet.

  • Módulo: Recupere informações para cada módulo carregado no processo.
  • FileVersionInfo: Recupere informações de versão do arquivo para o módulo principal do processo.

Observação

Um módulo é um arquivo executável ou uma biblioteca de vínculo dinâmico (DLL) carregada em um processo. Um processo tem um ou mais módulos. O módulo principal é o módulo usado inicialmente para iniciar o processo. Para obter mais informações, consulte Classe ProcessModule.

Exemplos

Exemplo 1: Obter uma lista de todos os processos em execução no computador local

Get-Process

Este comando obtém uma lista de todos os processos em execução no computador local. Para obter uma definição de cada coluna de exibição, consulte a seção NOTAS .

Para ver todas as propriedades de um objeto Process , use Get-Process | Get-Member. Por padrão, o PowerShell exibe determinados valores de propriedade usando unidades como kilobytes (K) e megabytes (M). Os valores reais quando acessados com o operador de acesso de membro (.) estão em bytes.

Exemplo 2: Exibir informações detalhadas sobre um ou mais processos

Get-Process winword, explorer | Format-List *

Esse pipeline exibe informações detalhadas sobre os winword processos no explorer computador. Ele usa o parâmetro Name para especificar os processos, mas omite o nome do parâmetro opcional. O operador de pipeline (|) canaliza objetos Process para o Format-List cmdlet, que exibe todas as propriedades disponíveis (*) e seus valores para cada objeto.

Você também pode identificar os processos por suas IDs de processo. Por exemplo, Get-Process -Id 664, 2060.

Exemplo 3: Obter todos os processos com um conjunto de trabalho maior do que um tamanho especificado

Get-Process | Where-Object { $_.WorkingSet -gt 20971520 }
Get-Process | Where-Object WorkingSet -GT 20MB

O Get-Process cmdlet retorna os processos em execução. A saída é canalizada para o Where-Object cmdlet, que seleciona os objetos com um valor WorkingSet maior que 20.971.520 bytes.

No primeiro exemplo, Where-Object usa um scriptblock para comparar a propriedade WorkingSet de cada objeto Process . No segundo exemplo, o Where-Object cmdlet usa a sintaxe simplificada para comparar a propriedade WorkingSet . Neste caso, -GT é um parâmetro, não um operador de comparação. O segundo exemplo também usa um sufixo literal numérico como uma alternativa concisa ao 20971520. No PowerShell, MB representa um multiplicador de mebibyte (MiB). 20MB é igual a 20.971.520 bytes.

Exemplo 4: Exibir processos no computador em grupos com base na prioridade

$processes = Get-Process
$processes | Sort-Object { $_.PriorityClass } | Format-Table -View Priority

Esses comandos exibem processos no computador em grupos com base em sua classe de prioridade. O primeiro comando obtém todos os processos no computador e os armazena $processes na variável.

O segundo comando canaliza os objetos Process armazenados na variável para o Sort-Object cmdlet e, em $processes seguida, para o Format-Table cmdlet, que formata os processos usando o modo de exibição Priority.

O modo de exibição Prioridade e outros modos de exibição são definidos nos arquivos de .ps1xml formato no diretório base do PowerShell ().$PSHOME

Exemplo 5: Adicionar uma propriedade à exibição de saída padrão 'Get-Process'

Get-Process -Name powershell | Format-Table -Property @(
    'Handles'
    @{ Name = 'NPM(K)'; Expression = { [int] ($_.NPM / 1KB) } }
    @{ Name = 'PM(K)';  Expression = { [int] ($_.PM / 1KB) } }
    @{ Name = 'WS(K)';  Expression = { [int] ($_.WS / 1KB) } }
    @{ Name = 'CPU(s)'; Expression = { if ($_.CPU) { $_.CPU.ToString('N') } } }
    'Id'
    @{ Name = 'SI'; Expression = 'SessionId' }
    'ProcessName'
    'StartTime'
) -AutoSize
Handles NPM(K) PM(K) WS(K) CPU(s)   Id SI ProcessName StartTime
------- ------ ----- ----- ------   -- -- ----------- ---------
    655     34 69424 83424 2.20   4240  1 powershell  4/14/2025 10:40:10 AM
    572     36 68768 57260 7.41   4968  1 powershell  4/13/2025 3:33:50 PM
    405     26 38144 30340 1.80   8776  1 powershell  4/14/2025 9:54:27 AM

Este exemplo recupera processos do computador local e canaliza cada objeto Process para o Format-Table cmdlet. Format-Table recria a exibição de saída padrão de um objeto Process usando uma mistura de nomes de propriedade e propriedades calculadas. A exibição inclui uma propriedade StartTime adicional não presente na exibição padrão.

Exemplo 6: Obter informações de versão para um processo

Get-Process -Name powershell -FileVersionInfo
ProductVersion   FileVersion      FileName
--------------   -----------      --------
10.0.19041.320   10.0.19041.32... C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

Este comando usa o parâmetro FileVersionInfo para obter informações de versão do arquivo para o módulo principal do powershell processo. O módulo principal é o arquivo usado para iniciar o processo, que neste caso é powershell.exe.

Para usar esse comando com processos que você não possui no Windows Vista e versões posteriores do Windows, você deve executar o PowerShell com direitos de usuário elevados (Executar como administrador).

Exemplo 7: Obter módulos carregados com o processo especificado

Get-Process -Name SQL* -Module

Este comando usa o parâmetro Module para obter os módulos carregados por todos os processos com um nome começando com SQL.

Para usar esse comando com processos que você não possui no Windows Vista e versões posteriores do Windows, você deve executar o PowerShell com direitos de usuário elevados (Executar como administrador).

Exemplo 8: Encontrar o proprietário de um processo

Get-Process -Name powershell -IncludeUserName
Handles      WS(K)   CPU(s)     Id UserName            ProcessName
-------      -----   ------     -- --------            -----------
    782     132080     2.08   2188 DOMAIN01\user01     powershell
Get-CimInstance -ClassName Win32_Process -Filter "name='powershell.exe'" |
    Invoke-CimMethod -MethodName GetOwner
Domain   ReturnValue User   PSComputerName
------   ----------- ----   --------------
DOMAIN01           0 user01

O primeiro comando mostra como obter o proprietário de um processo. O parâmetro IncludeUserName requer direitos de usuário elevados (Executar como administrador). A saída revela que o proprietário é DOMAIN01\user01.

O segundo pipeline mostra uma maneira diferente de obter o proprietário de um processo usando Get-CimInstance e Invoke-CimMethod. A classe Win32_Process com um filtro recupera powershell processos e o método invocado GetOwner() retorna informações sobre o Domínio e o Usuário do processo. Esse método não requer direitos de usuário elevados.

Exemplo 9: Usar uma variável automática para identificar o processo que hospeda a sessão atual

Get-Process -Name powershell
Handles  NPM(K)    PM(K)      WS(K)     CPU(s)     Id  SI ProcessName
-------  ------    -----      -----     ------     --  -- -----------
    561      44    47564      40740       6.48   2604   1 powershell
    642      40    72040      24372      23.53   3576   1 powershel
Get-Process -Id $PID
Handles  NPM(K)    PM(K)      WS(K)     CPU(s)     Id  SI ProcessName
-------  ------    -----      -----     ------     --  -- -----------
    647      40    72464      30716      23.67   3576   1 powershell

Esses comandos mostram como usar a variável automática $PID para identificar o processo que está hospedando a sessão atual do PowerShell. Você pode usar esse método para distinguir o processo de host de outros powershell processos que você pode querer controlar.

O primeiro comando executa todos os powershell processos. O segundo comando obtém o powershell processo que está hospedando a sessão atual.

Exemplo 10: Obter todos os processos que têm um título de janela principal e exibi-los em uma tabela

Get-Process |
    Where-Object -Property MainWindowTitle |
    Format-Table -Property Id, Name, MainWindowTitle -AutoSize

Esse pipeline obtém todos os processos que têm um título de janela principal e os exibe em uma tabela com o ID e o nome do processo.

MainWindowTitle é uma das muitas propriedades úteis do tipo de objeto Diagnostics.Process que Get-Process retorna. Para exibir todas as propriedades, use Get-Process | Get-Member.

Parâmetros

-ComputerName

Especifica os computadores para os quais esse cmdlet obtém processos em execução. O padrão é o computador local.

Especifique o nome NetBIOS, um endereço IP ou um nome de domínio totalmente qualificado (FQDN) de um ou mais computadores. Para especificar o computador local, use o nome do computador, um ponto (.) ou localhost.

Esse parâmetro não depende da comunicação remota do Windows PowerShell. Você pode usar o parâmetro ComputerName deste cmdlet mesmo que seu computador não esteja configurado para executar comandos remotos.

Propriedades dos parâmetros

Tipo:

String[]

Default value:Local computer
Suporta carateres universais:False
NãoMostrar:False
Aliases:CN

Conjuntos de parâmetros

Name
Position:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:True
Valor dos restantes argumentos:False
Id
Position:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:True
Valor dos restantes argumentos:False
InputObject
Position:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:True
Valor dos restantes argumentos:False

-FileVersionInfo

Indica que esse cmdlet obtém as informações de versão do arquivo para o programa que é executado no processo.

No Windows Vista e versões posteriores do Windows, você deve executar o PowerShell com direitos de usuário elevados (Executar como administrador) para usar esse parâmetro em processos que não são de sua propriedade.

Não é possível usar os parâmetros FileVersionInfo e ComputerName juntos.

Para obter informações de versão de arquivo para um processo em um computador remoto, use o cmdlet Invoke-Command.

Usar esse parâmetro é o mesmo que acessar a propriedade MainModule.FileVersionInfo de cada objeto Process . Quando você usa esse parâmetro, Get-Process retorna um objeto FileVersionInfo , não um objeto Process . Não é possível canalizar a saída produzida usando esse parâmetro para um cmdlet que espera um objeto Process , como Stop-Process.

Propriedades dos parâmetros

Tipo:SwitchParameter
Default value:False
Suporta carateres universais:False
NãoMostrar:False
Aliases:FV, FVI

Conjuntos de parâmetros

Name
Position:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False
Id
Position:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False
InputObject
Position:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False

-Id

Especifica um ou mais processos por ID de processo (PID). Você pode especificar vários IDs separados por vírgulas. Para obter o PID de um processo, use Get-Process. Para obter o PID da sessão atual do PowerShell, use $PID.

Propriedades dos parâmetros

Tipo:

Int32[]

Default value:None
Suporta carateres universais:False
NãoMostrar:False
Aliases:PID

Conjuntos de parâmetros

IdWithUserName
Position:Named
Obrigatório:True
Valor do pipeline:False
Valor do pipeline por nome de propriedade:True
Valor dos restantes argumentos:False
Id
Position:Named
Obrigatório:True
Valor do pipeline:False
Valor do pipeline por nome de propriedade:True
Valor dos restantes argumentos:False

-IncludeUserName

Indica que esse comando adiciona uma propriedade UserName a cada objeto Process retornado.

Você deve executar o PowerShell com direitos de usuário elevados (Executar como administrador) para usar esse parâmetro.

Propriedades dos parâmetros

Tipo:SwitchParameter
Default value:None
Suporta carateres universais:False
NãoMostrar:False

Conjuntos de parâmetros

NameWithUserName
Position:Named
Obrigatório:True
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False
IdWithUserName
Position:Named
Obrigatório:True
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False
InputObjectWithUserName
Position:Named
Obrigatório:True
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False

-InputObject

Especifica um ou mais objetos Process . Use uma variável que contenha os objetos ou um comando ou expressão que obtenha os objetos.

Propriedades dos parâmetros

Tipo:

Process[]

Default value:None
Suporta carateres universais:False
NãoMostrar:False

Conjuntos de parâmetros

InputObjectWithUserName
Position:Named
Obrigatório:True
Valor do pipeline:True
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False
InputObject
Position:Named
Obrigatório:True
Valor do pipeline:True
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False

-Module

Indica que esse cmdlet obtém os módulos que o processo carregou.

No Windows Vista e versões posteriores do Windows, você deve executar o PowerShell com direitos de usuário elevados (Executar como administrador) para usar esse parâmetro em processos que não são de sua propriedade.

Para obter os módulos carregados por um processo em um computador remoto, use o Invoke-Command cmdlet.

Usar esse parâmetro é o mesmo que acessar a propriedade Modules de cada objeto Process . Quando você usa esse parâmetro, Get-Process retorna um objeto ProcessModule , não um objeto Process . Não é possível canalizar a saída produzida usando esse parâmetro para um cmdlet que espera um objeto Process , como Stop-Process.

Quando você usa os parâmetros Module e FileVersionInfo juntos, esse cmdlet retorna um objeto FileVersionInfo com informações sobre a versão do arquivo de todos os módulos.

Propriedades dos parâmetros

Tipo:SwitchParameter
Default value:False
Suporta carateres universais:False
NãoMostrar:False

Conjuntos de parâmetros

Name
Position:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False
Id
Position:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False
InputObject
Position:Named
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False

-Name

Especifica um ou mais processos por nome de processo. Você pode especificar vários nomes de processo separados por vírgulas e usar caracteres curinga. O uso do -Name parâmetro é opcional.

Propriedades dos parâmetros

Tipo:

String[]

Default value:None
Suporta carateres universais:True
NãoMostrar:False
Aliases:ProcessName

Conjuntos de parâmetros

Name
Position:0
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:True
Valor dos restantes argumentos:False
NameWithUserName
Position:0
Obrigatório:False
Valor do pipeline:False
Valor do pipeline por nome de propriedade:True
Valor dos restantes argumentos:False

CommonParameters

Este cmdlet suporta os parâmetros comuns: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Para obter mais informações, consulte about_CommonParameters.

Entradas

Process

Você pode canalizar objetos Process para este cmdlet.

Saídas

Process

Por padrão, esse cmdlet retorna um objeto System.Diagnostics.Process.

FileVersionInfo

Se você usar o parâmetro FileVersionInfo , esse cmdlet retornará um objeto System.Diagnostics.FileVersionInfo .

ProcessModule

Se você usar o parâmetro Module , sem o parâmetro FileVersionInfo , esse cmdlet retornará um objeto System.Diagnostics.ProcessModule .

Notas

O Windows PowerShell inclui os seguintes aliases para Get-Process:

  • gps
  • ps

Em computadores que executam o Windows de 64 bits, a versão de 64 bits do PowerShell obtém o módulo principal e os módulos de processo de 64 bits. A versão de 32 bits do PowerShell obtém apenas módulos de processo de 32 bits.

Advertência

Quando você usa Get-Process para obter um processo de 64 bits na versão de 32 bits do PowerShell, propriedades como Path e MainModule do objeto Process retornado são $null. Você deve usar a versão de 64 bits do PowerShell ou a classe Win32_Process .

Para obter informações de processo de um computador remoto, use o cmdlet Invoke-Command. Para obter mais informações, consulte Invoke-Command.

Você pode usar a classe de Win32_Process WMI (Instrumentação de Gerenciamento do Windows) no PowerShell como uma alternativa ao Get-Process. Para obter mais informações, consulte:

A exibição padrão de um objeto Process é um modo de exibição de tabela que inclui as seguintes colunas.

  • Handles: O número de identificadores que o processo abriu.
  • NPM(K): A quantidade de memória não paginada que o processo está usando, em kilobytes.
  • PM(K): A quantidade de memória paginável que o processo está usando, em kilobytes.
  • WS(K): O tamanho do conjunto de trabalho do processo, em kilobytes. O conjunto de trabalho consiste nas páginas de memória que foram recentemente referenciadas pelo processo.
  • CPU(s): A quantidade de tempo de processador que o processo usou em todos os processadores, em segundos.
  • Id: O ID do processo (PID) do processo.
  • SI: O ID da sessão do processo.
  • ProcessName: O nome do processo.

Você pode usar as exibições alternativas internas para objetos Process disponíveis com Format-Table, como StartTime e Priority. Você também pode projetar suas próprias vistas.

Para obter uma descrição de todos os membros disponíveis do objeto Process, consulte Propriedades do processo e Métodos do processo.