แสดงพา ธ ไฟล์ EXE ของกระบวนการที่กำลังทำงานอยู่บนบรรทัดคำสั่งใน Windows


26

ฉันจะแสดงพา ธ ไฟล์ EXE แบบเต็มของแต่ละกระบวนการทำงานจากบรรทัดคำสั่งใน Windows ได้อย่างไร

ฉันได้ลองtasklistและpslistแล้วแต่พวกเขาไม่แสดงเส้นทางแบบเต็ม:

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

ให้:

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

และ

pslist Spring.Tests -x

ให้:

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

เนื่องจากSpring.Tests.exeสามารถอยู่ในไดเรกทอรีต่าง ๆ ฉันต้องการทราบว่าถูกดำเนินการอย่างใด


1
โอ้นั่นเป็นคำถามคลาสสิก .. นอกจากผู้จัดการงานที่มีคอลัมน์ สำหรับบรรทัดคำสั่ง WMIC และ powershell สามารถ มันอยู่ที่นี่หรือบน stackoverflow .. ต้องอยู่ทุกที่ ... จริง ๆ แล้วฉันไม่เห็นมันตอบอย่างเต็มที่ที่นี่ฉันมีบันทึกของมัน .. ฉันจะตรวจสอบ
barlop

@barlop มันตลก: ในขณะที่คุณเขียนความคิดเห็นของคุณฉันได้ทดลองกับ PowerShell แล้วในขณะที่ฉันกำลังทำPowerShell อื่น ๆ ที่กำลังทำการทดลองเช่นกัน (:
Jeroen Wiert Pluimers

ไม่จำเป็นต้องใช้ ':(' วิธีการของคุณเรียบร้อยมากและคุณพบว่าเร็ว
barlop

1
ฉันจะต้องเป็นออทิสติก! บางทีคุณอาจจะใส่จมูกในรอยยิ้มที่จะทำให้มันชัดเจน ;-)
barlop

1
@kayleeFrye_onDeck ฉันมีความสำเร็จที่ดีกว่าการแก้ปัญหาการทำงานภายใต้โทเค็น UAC สูง แต่จริงๆต้องการมีรุ่นบรรทัดคำสั่งของtechnet.microsoft.com/en-us/sysinternals/processexplorer.aspxที่ช่วยให้การสอบถามความน่าเชื่อถือภายใต้โทเค็นว่า
Jeroen Wiert Pluimers

คำตอบ:


26

นอกจากบรรทัดที่คุณให้มานี่คือกลุ่มของบรรทัดที่ (นอกเหนือจากบรรทัดที่สอง) สามารถใช้เพื่อแสดงรายการพา ธ :

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

นี่เป็นข้อได้เปรียบของความรวดเร็ว (wmic) เพราะ PowerShell นั้นช้ามาก ๆ !!!
Mr.Robot

ระมัดระวังการจัดรูปแบบที่ใช้ ตัวอย่างเช่นการไม่รวมเครื่องหมายอัญประกาศเดี่ยวภายในnameฟิลด์จะทำให้สิ่งนี้แตก
kayleeFrye_onDeck

@ kayleeFrye_onDeck ดีให้ความยาวของคำสั่งที่ฉันคาดหวังว่าจะมีใครสักคนที่จะคัดลอก / วางต่อไปและเพียงแค่เปลี่ยนชื่อของกระบวนการ ดังนั้นหวังว่าพวกเขาไม่ควรทำผิดพลาดในการขาดเครื่องหมายคำพูดเดี่ยว ๆ รอบชื่อกระบวนการเนื่องจากพวกเขาสามารถทิ้งคำพูดที่อยู่ในนั้นได้
barlop

9

PowerShellเพื่อช่วยเหลือ

ก่อนอื่นฉันใช้Get-Memberเพื่อดูว่ากระบวนการรับส่งคืนได้อย่างไร:

PowerShell Get-Process ^| Get-Member

จากนั้นฉันกรองเส้นทางจาก Get-Processเพื่อหาว่าSpring.Testsกระบวนการใดกำลังทำงานอยู่:

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

ที่เกิดขึ้นใน:

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

ซึ่งเป็นข้อมูลที่ฉันต้องการ


1
มี WMIC ด้วยเช่นกัน แต่ PowerShell นั้นมีความทันสมัยและยืดหยุ่นมากกว่า
barlop

เป็นPathสิ่งเดียวกับบรรทัดคำสั่ง? สิ่งที่เกี่ยวกับข้อโต้แย้งเพื่อปฏิบัติการ? @barlop WMI ยังคงมีคุณสมบัติจำนวนมากที่ไม่สามารถใช้งานได้ใน PowerShell
jpmc26

@ jpmc26 ฉันไม่ต้องการสิ่งเหล่านั้น แต่ฉันคิดว่าคุณสามารถรับพวกมันผ่านStartInfoแทนที่จะเป็นไปPathตามstackoverflow.com/questions/1012409/…
Jeroen Wiert Pluimers

@ jpmc26 พา ธ ไฟล์ที่คำสั่ง wmic ส่งออกจะเหมือนกับพา ธ ไฟล์ที่คำสั่ง powershell ........ มีเอาต์พุตเช่นตัวคำนวณแบบเปิดของ Windows และลองใช้กับ calc.exe pastebin.com/raw/TK8xSPPL
barlop

แครอททำอะไรในคำสั่งแรก?
Jared Beach

6

ท่อ PowerShell ของเข้าGet-ProcessSelect-Object

คำสั่งตัวอย่างสำหรับ Notepad ++:

Get-Process notepad++ | Select-Object Path

เอาท์พุท:

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

รับเอาท์พุทโดยตรง(Get-Process notepad++).Path(อาจจะเก็บไว้ในตัวแปร)
nawfal
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.