Mostrar o caminho do arquivo EXE dos processos em execução na linha de comando no Windows


26

Como posso mostrar o caminho completo do arquivo EXE de cada processo em execução na linha de comando no Windows?

Eu tentei tasklist e pslist , mas eles não mostram o caminho completo:

tasklist /FI "ImageName eq Spring.Tests.exe" /v /fo List

Dá:

Image Name:   Spring.Tests.exe
PID:          3956
Session Name: Console
Session#:     1
Mem Usage:    9,772 K
Status:       Running
User Name:    W81ENTX64DELPHI\Developer
CPU Time:     0:00:01
Window Title: Spring

e

pslist Spring.Tests -x

dá:

Name                Pid      VM      WS    Priv Priv Pk   Faults   NonP Page
Spring.Tests       3956   83472    9772    5320    5692     5037     11  157
 Tid Pri    Cswtch            State     User Time   Kernel Time   Elapsed Time
1488  10     11018     Wait:UserReq  0:00:00.906   0:00:01.046    0:53:06.977

Como Spring.Tests.exepode estar em vários diretórios, quero saber qual foi executado.


1
ah, essa é uma pergunta clássica .. além do gerenciador de tarefas ter uma coluna. Para linha de comando, WMIC e PowerShell podem. é ainda aqui ou em stackoverflow .. deve estar em todo o lugar ... Na verdade eu não posso vê-lo totalmente respondida aqui, eu tenho uma nota do mesmo .. eu vou verificar
barlop

@barlop é engraçado: enquanto você escrevia o seu comentário, eu já estava experimentando o PowerShell, como também fazia outras experiências do PowerShell (:
Jeroen Wiert Pluimers

há necessidade de um ':(' o seu método é muito limpo e você encontrou-lo rapidamente
barlop

1
Eu devo ser autista! Talvez você deve colocar um nariz no emoticon para tornar mais claro ;-)
barlop

1
@kayleeFrye_onDeck Tenho mais sucesso executando as soluções sob um token UAC elevado, mas realmente gostaria que houvesse uma versão em linha de comando do technet.microsoft.com/en-us/sysinternals/processexplorer.aspx que permita consultas confiáveis ​​sob esse token.
Jeroen Wiert Pluimers 30/03

Respostas:


26

Além da linha que você forneceu, aqui estão algumas linhas que (além da segunda) podem ser usadas para listar os caminhos:

PS C:\> gwmi win32_process | select Handle, CommandLine | format-list
PS C:\> gwmi win32_process | select name
PS C:\> gwmi win32_process | select CommandLine
C:\>wmic process get ProcessID,ExecutablePath
C:\>wmic process where "name='mysqld.exe'" get ProcessID, ExecutablePath
C:\>wmic process where "name='mysqld.exe'" get ProcessID, ExecutablePath /FORMAT:LIST

isso tem a vantagem de ser rápido, (wmic) porque o PowerShell é tão lento!
Mr.Robot

Esteja muito atento à formatação usada. Por exemplo, não incluir as aspas simples no namecampo fará com que isso se quebre.
precisa saber é o seguinte

@kayleeFrye_onDeck bem, dado o tamanho do comando, eu esperaria que alguém copiasse / colasse de qualquer maneira e apenas alterasse o nome do processo. Portanto, esperamos que eles não cometam o erro de deixar aspas simples ao redor do nome do processo, pois podem deixar as que estão lá.
barlop

9

PowerShell para o resgate.

Primeiro, usei o Get-Member para ver o que o Get-Process poderia retornar:

PowerShell Get-Process ^| Get-Member

Depois, filtrei o caminho do Get-Process para descobrir quais Spring.Testsprocessos estavam em execução:

PowerShell Get-Process Spring.Tests ^| Format-List Path

resultando em:

Path : C:\Users\Developer\Versioned\Spring4D\Tests\Bin\DelphiXE\Spring.Tests.exe

que é exatamente a informação que eu queria.


1
há WMIC também, mas PowerShell é mais moderno e flexível
barlop

É Patha mesma coisa que linha de comando? E os argumentos para o executável? O @barlop WMI ainda possui vários recursos que, de outra forma, não estão disponíveis no PowerShell.
Jpmc26 10/05

@ jpmc26 eu não preciso aqueles, mas eu acho que você pode obtê-los via StartInfoem vez de Pathcom base em stackoverflow.com/questions/1012409/...
Jeroen Wiert Pluimers

@ jpmc26 os caminhos de arquivo que o comando wmic gera, são iguais aos caminhos que o comando powerhell ........ gera, por exemplo, abrir a calculadora do Windows e experimentá-lo em calc.exe pastebin.com/raw/TK8xSPPL
barlop

O que a cenoura faz no primeiro comando?
Jared Praia

6

Coloque o PowerShell Get-Processem Select-Object.

Exemplo de comando para o Notepad ++:

Get-Process notepad++ | Select-Object Path

Saída:

Path
----
D:\Notepad++\notepad++.exe

Para obter saída diretamente, (Get-Process notepad++).Path(talvez para armazenar em uma variável).
Nawfal #
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.