Mostrar la ruta del archivo EXE de los procesos en ejecución en la línea de comandos en Windows

26

¿Cómo puedo mostrar la ruta completa del archivo EXE de cada proceso en ejecución desde la línea de comandos en Windows?

Intenté tasklist y pslist , pero no muestran la ruta completa:

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

Da:

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

y

pslist Spring.Tests -x

da:

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.exepuede estar en varios directorios, quiero saber cuál se ejecutó.

Jeroen Wiert Pluimers
fuente
1
oh, esa es una pregunta clásica ... además del administrador de tareas que tiene una columna. Para la línea de comandos, WMIC y powershell pueden. incluso está aquí o en stackoverflow ... debe estar por todas partes ... En realidad, no puedo verla completamente respondida aquí, tengo una nota de eso ... lo comprobaré
barlop
@barlop es divertido: mientras escribías tu comentario, ya estaba experimentando con PowerShell, ya que también había estado experimentando con otros PowerShell (:
Jeroen Wiert Pluimers
no necesita un ':(' su método es muy bueno y lo encontró rápido
barlop
1
¡Debo ser autista! Tal vez deberías poner una nariz en el smiley para
aclararlo
1
@kayleeFrye_onDeck Tengo más éxito ejecutando las soluciones bajo un token UAC elevado, pero realmente desearía que hubiera una versión de línea de comandos de technet.microsoft.com/en-us/sysinternals/processexplorer.aspx que permita consultas confiables bajo ese token.
Jeroen Wiert Pluimers

Respuestas:

26

Además de la línea que proporcionó, aquí hay un montón de líneas que (aparte de la segunda) se pueden usar para enumerar rutas:

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
barlop
fuente
¡Esto tiene la ventaja de ser rápido (wmic) porque el PowerShell es muy lento!
Mr.Robot
Esté muy atento al formato utilizado. Por ejemplo, no incluir las comillas simples dentro del namecampo hará que esto se rompa.
kayleeFrye_onDeck
@kayleeFrye_onDeck bien, dada la longitud del comando, esperaría que alguien simplemente lo copie / pegue y simplemente cambie el nombre del proceso. Así que con suerte no deberían cometer el error de perder comillas simples alrededor del nombre del proceso, ya que pueden dejar las que están allí.
barlop
9

PowerShell al rescate.

Primero usé Get-Member para ver qué Get-Process podría devolver:

PowerShell Get-Process ^| Get-Member

Luego filtré la ruta desde Get-Process para averiguar qué Spring.Testsprocesos se estaban ejecutando:

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

Resultando en:

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

que es exactamente la información que quería

Jeroen Wiert Pluimers
fuente
1
también hay WMIC pero powershell es más moderno y flexible
barlop
¿Es Pathlo mismo que la línea de comando? ¿Qué pasa con los argumentos para el ejecutable? @barlop WMI todavía tiene una serie de características que de otro modo no estarían disponibles en PowerShell.
jpmc26
@ jpmc26 no necesitaba esos, pero creo que se puede conseguir a través StartInfoen lugar de Pathsobre la base de stackoverflow.com/questions/1012409/...
Jeroen Wiert Pluimers
@ jpmc26 las rutas de archivo que genera el comando wmic, son las mismas que las rutas de archivo que el comando powershell ........ produce, por ejemplo, abra la calculadora de Windows y pruébelo para calc.exe pastebin.com/raw/TK8xSPPL
barlop
¿Qué hace la zanahoria en el primer comando?
Jared Beach
6

Instale PowerShell Get-Processen Select-Object.

Comando de ejemplo para Notepad ++:

Get-Process notepad++ | Select-Object Path

Salida:

Path
----
D:\Notepad++\notepad++.exe
Arijit Sur
fuente
Para obtener salida directamente, (Get-Process notepad++).Path(tal vez para almacenar en una variable).
nawfal