Afficher le chemin du fichier EXE des processus en cours d'exécution sur la ligne de commande dans Windows


26

Comment puis-je afficher le chemin d'accès complet au fichier EXE de chaque processus en cours d'exécution à partir de la ligne de commande dans Windows?

J'ai essayé tasklist et pslist , mais ils ne montrent pas le chemin complet:

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

Donne:

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

et

pslist Spring.Tests -x

donne:

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

Puisqu'il Spring.Tests.exepeut se trouver dans divers répertoires, je veux savoir lequel a été exécuté.


1
oh c'est une question classique .. en plus du gestionnaire de tâches ayant une colonne. Pour la ligne de commande, WMIC et PowerShell peuvent. c'est même ici ou sur stackoverflow .. doit être partout ... En fait, je ne vois pas de réponse complète ici, j'en ai une note .. je vais vérifier
barlop

@barlop c'est drôle: pendant que vous écriviez votre commentaire, j'étais déjà en train d'expérimenter avec PowerShell, car j'avais aussi fait d' autres expériences avec PowerShell (:
Jeroen Wiert Pluimers

pas besoin d'un ':(' votre méthode est très soignée et vous l'avez trouvée rapidement
barlop

1
Je dois être autiste! Vous devriez peut-être mettre un nez dans le smiley pour le rendre plus clair ;-)
barlop

1
@kayleeFrye_onDeck J'ai plus de succès à exécuter les solutions sous un jeton UAC élevé, mais j'aimerais vraiment qu'il y ait une version en ligne de commande de technet.microsoft.com/en-us/sysinternals/processexplorer.aspx qui permet une interrogation fiable sous ce jeton.
Jeroen Wiert Pluimers

Réponses:


26

En plus de la ligne que vous avez donnée, voici un tas de lignes qui (à part la seconde) peuvent être utilisées pour lister les chemins:

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

cela a l'avantage d'être rapide, (wmic) parce que le powershell est tellement dieu lent !!!
Mr.Robot

Soyez très attentif au formatage utilisé. Par exemple, ne pas inclure les guillemets simples dans le namechamp entraînera la rupture.
kayleeFrye_onDeck

@kayleeFrye_onDeck bien, étant donné la longueur de la commande, je m'attendrais à ce que quelqu'un le copie / colle de toute façon et change simplement le nom du processus. J'espère donc qu'ils ne devraient pas commettre l'erreur de manquer des guillemets simples autour du nom du processus car ils peuvent laisser ceux qui sont là.
barlop

9

PowerShell à la rescousse.

J'ai d'abord utilisé Get-Member pour voir ce que Get-Process pourrait retourner:

PowerShell Get-Process ^| Get-Member

Ensuite, j'ai filtré le chemin depuis Get-Process pour déterminer quels Spring.Testsprocessus étaient en cours d'exécution:

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

résultant en:

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

c'est exactement l'information que je voulais.


1
il y a aussi WMIC mais PowerShell est plus moderne et flexible
barlop

Est-ce Pathla même chose que la ligne de commande? Qu'en est-il des arguments de l'exécutable? @barlop WMI possède toujours un certain nombre de fonctionnalités qui ne sont pas disponibles dans PowerShell.
jpmc26

@ jpmc26 Je n'en avais pas besoin, mais je pense que vous pouvez les obtenir via StartInfoplutôt que Pathsur stackoverflow.com/questions/1012409/…
Jeroen Wiert Pluimers

@ jpmc26 les chemins de fichiers que la commande wmic génère, sont les mêmes que les chemins de fichiers que la commande powershell ........ génère, par exemple, ouvrez la calculatrice Windows et essayez-la pour calc.exe pastebin.com/raw/TK8xSPPL
barlop

Que fait la carotte dans la première commande?
Jared Beach

6

Dirigez PowerShell Get-Processdans Select-Object.

Exemple de commande pour Notepad ++:

Get-Process notepad++ | Select-Object Path

Sortie:

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

Pour obtenir la sortie directement (Get-Process notepad++).Path(peut-être pour stocker dans une variable).
nawfal
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.