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


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

eu tentei lista de tarefas 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

Desde a Spring.Tests.exe pode estar em vários diretórios, quero saber qual deles foi executado.


18


origem


Ah, essa é uma pergunta clássica ... além do gerenciador de tarefas ter uma coluna. Para linha de comando, o WMIC e o powershell podem. é mesmo aqui ou em stackoverflow .. deve estar em todo o lugar ... Na verdade eu não posso ver totalmente respondida aqui, eu tenho uma nota dele .. eu vou verificar - barlop
@barlop é engraçado: enquanto você escrevia seu comentário, eu já estava experimentando com o PowerShell, como eu estava fazendo outra experimentação do PowerShell também (: - Jeroen Wiert Pluimers
não há necessidade de um ':(' seu método é muito legal e você achou rápido - barlop
Eu devo ser autista! Talvez você devesse colocar um nariz no smiley para torná-lo mais claro ;-) - barlop
@kayleeFrye_onDeck Tenho mais sucesso executando as soluções em um token UAC elevado, mas realmente gostaria que houvesse uma versão de linha de comando de technet.microsoft.com/pt-br/sysinternals/processexplorer.aspx que permite a consulta confiável sob esse token. - Jeroen Wiert Pluimers


Respostas:


Além da linha que você deu, aqui estão algumas linhas que (além da segunda) podem ser usadas para listar 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

22



isso tem a vantagem de ser rápido (wmic) porque o powershell é tão devagar !!! - Mr.Robot
Fique muito atento à formatação usada. Por exemplo, não incluindo as marcas de aspas simples dentro do name campo fará com que isso se quebre. - kayleeFrye_onDeck
@kayleeFrye_onDeck bem, dado o tamanho do comando, eu esperaria que alguém simplesmente copiasse / colasse mesmo assim e apenas mudasse o nome do processo. Então, esperamos que eles não cometam o erro de perder aspas simples em torno do nome do processo, pois podem deixar os que estão lá. - barlop


PowerShell para o resgate.

Primeiro eu usei Get-Member Para ver o que Get-Process poderia retornar:

PowerShell Get-Process ^| Get-Member

Então eu filtrou o caminho do Get-Process para descobrir qual Spring.Tests processos 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.


8



há WMIC também, mas o powershell é mais moderno e flexível - barlop
É Path a mesma coisa que linha de comando? O que acontece com o argumentos para o executável? O @barlop WMI ainda possui diversos recursos que não estão disponíveis no PowerShell. - jpmc26
@ jpmc26 Eu não precisava disso, mas acho que você pode obtê-los via StartInfo ao invés de Path baseado em stackoverflow.com/questions/1012409/… - Jeroen Wiert Pluimers
@ jpmc26 os caminhos de arquivo que o comando wmic gera, são os mesmos que os caminhos de arquivo que o comando powershell ........ produz, e. Abra a calculadora do Windows e tente-o para calc.exe pastebin.com/raw/TK8xSPPL - barlop
O que a cenoura faz no primeiro comando? - Jared Beach


Pipe PowerShell's Get-Process para dentro Select-Object.

Exemplo de comando para o Notepad ++:

Get-Process notepad++ | Select-Object Path

Saída:

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

3



Para obter a saída diretamente, (Get-Process notepad++).Path (talvez para armazenar em uma variável). - nawfal