Mostra il percorso del file EXE dei processi in esecuzione sulla riga di comando in Windows


26

Come posso mostrare il percorso completo del file EXE di ogni processo in esecuzione dalla riga di comando in Windows?

Ho provato tasklist e pslist , ma non mostrano il percorso 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

Dal momento che Spring.Tests.exepuò essere in varie directory, voglio sapere quale è stato eseguito.


1
oh, questa è una domanda classica .. oltre al task manager che ha una colonna. Per la riga di comando, WMIC e powershell possono. è anche qui o su StackOverflow .. deve essere dappertutto ... In realtà non riesco a vederlo completo risposta qui, ne ho una nota .. Controllerò
barlop

@barlop è divertente: mentre scrivevi il tuo commento, stavo già sperimentando PowerShell, mentre stavo facendo anche altri esperimenti PowerShell (:
Jeroen Wiert Pluimers,

non c'è bisogno di un ':(' il tuo metodo è molto accurato e lo hai trovato veloce
barlop

1
Devo essere autistico! Forse dovresti mettere un naso nello smiley per renderlo più chiaro ;-)
barlop

1
@kayleeFrye_onDeck Ho un migliore successo nell'esecuzione delle soluzioni con un token UAC elevato, ma vorrei davvero che esistesse una versione della riga di comando di technet.microsoft.com/en-us/sysinternals/processexplorer.aspx che consente di eseguire query affidabili con quel token.
Jeroen Wiert Pluimers,

Risposte:


26

Oltre alla linea che hai indicato, ecco un mucchio di linee che (a parte la seconda) possono essere utilizzate per elencare i percorsi:

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

questo ha il vantaggio di essere veloce, (wmic) perché PowerShell è così dannatamente lento !!!
Mr.Robot,

Sii molto attento alla formattazione utilizzata. Ad esempio, se non includi le virgolette singole all'interno del namecampo, ciò si interromperà.
kayleeFrye_onDeck

@kayleeFrye_onDeck bene, data la lunghezza del comando mi aspetto che qualcuno lo copi / incolli comunque e cambi il nome del processo. Quindi speriamo che non dovrebbero fare l'errore di perdere virgolette singole attorno al nome del processo in quanto possono lasciare quelle che ci sono.
barlop

9

PowerShell in soccorso.

Per prima cosa ho usato Get-Member per vedere cosa potrebbe restituire Get-Process :

PowerShell Get-Process ^| Get-Member

Quindi ho filtrato il percorso da Get-Process per capire quali Spring.Testsprocessi erano in esecuzione:

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

con il risultato di:

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

che è esattamente l'informazione che volevo.


1
c'è anche WMIC ma powershell è più moderno e flessibile
barlop

È Pathla stessa cosa della riga di comando? E gli argomenti dell'eseguibile? @barlop WMI ha ancora un numero di funzionalità che altrimenti non sarebbero disponibili in PowerShell.
jpmc26,

@ jpmc26 non ho bisogno di quelli, ma penso che si possono ottenere tramite StartInfoanziché Pathsulla base di stackoverflow.com/questions/1012409/...
Jeroen Wiert Pluimers

@ jpmc26 i percorsi dei file che il comando wmic genera, sono gli stessi dei percorsi dei file che il comando powershell ........ lì genera, ad esempio, aprire il calcolatore di Windows e provarlo per calc.exe pastebin.com/raw/TK8xSPPL
barlop

Cosa fa la carota nel primo comando?
Jared Beach,

6

Pipe PowerShell è Get-Processdentro Select-Object.

Esempio di comando per Notepad ++:

Get-Process notepad++ | Select-Object Path

Produzione:

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

Per ottenere l'output direttamente, (Get-Process notepad++).Path(forse per archiviare in una variabile).
nawfal,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.