วิธีรับคำสั่งที่เรียกใช้งานด้วย tasklist ได้อย่างไร


18

ตัวจัดการงาน Windows มีคอลัมน์ชื่อบรรทัดคำสั่งที่แสดงคำสั่งที่เริ่มงานที่กำหนดพร้อมสวิตช์และพารามิเตอร์ทั้งหมดตัวอย่างเช่น

test.exe -V -A 127.0.0.1 -P 6062

ตอนนี้ฉันต้องระบุงานบางอย่างที่กำลังฟังบนพอร์ตที่แน่นอนและ / หรือถูกเรียกด้วยชุดสวิตช์ที่แน่นอน เป้าหมายของฉันคือการปิดงานที่เลือก แต่ไม่ใช่งานอื่น ๆ ดังนั้นหากมีหลายtest.exeงานที่กำลังทำงานอยู่ฉันไม่สามารถปิดงานทั้งหมดที่ส่งคืนโดย:

tasklist /fo csv /nh /fi "imagename eq test.exe"

แต่น่าเสียดายที่ดูเหมือนว่าค่าtasklistมิได้pslist( ที่นี่ ) สามารถที่จะกลับบรรทัดคำสั่งฟิลด์ ฉันจะเอาชนะปัญหานี้ได้อย่างไร


บางทีคุณสามารถทำอะไรกับnetstat -aon | grep \.0:6062พอร์ต 6062 และคอลัมน์สุดท้ายจะเป็น PID ของโปรแกรมของคุณ ไม่แน่ใจว่าเพียงพอสำหรับคุณ tasklist /FI "PID eq <PID>"จะให้ปฏิบัติการของคุณอีกครั้ง
Rik

@Rik เศร้าที่ไม่เพียงพอเนื่องจากพอร์ตตัวเองไม่เพียงพอที่จะระบุงานที่ถูกต้องดังนั้นจึงจำเป็นต้องเห็นอาร์กิวเมนต์บรรทัดคำสั่งด้วย
István Zachar

นึกภาพไม่ออกหลายรายการที่ฟังพอร์ตเดียวกัน ... :) แต่ต้องเป็นไปได้ที่จะรับพารามิเตอร์ ... process explorerจาก Sysinternals สามารถแสดงสิ่งเหล่านี้ได้ใน GUI ดังนั้นข้อมูลจะต้องอยู่ที่ไหนสักแห่ง
Rik

คุณใช้คำสั่ง powershell หรือไม่? Like <<< Get-WmiObject win32_process -Filter "ชื่อเช่น '% test.exe'" | เลือก CreationDate, ProcessId, CommandLine | ft -AutoSize` >>> ดูที่นี่
Rik

@Rik พอร์ตนั้นแตกต่างกัน แต่ฉันต้องแยกอาร์กิวเมนต์บรรทัดคำสั่งเพื่อตรวจสอบว่างานนั้นเป็นภารกิจที่ฉันต้องฆ่าหรือไม่
István Zachar

คำตอบ:


35

แล้วอันนี้ละ:

wmic process where caption="test.exe" get commandline

และถ้าคุณทำสิ่งนี้คุณจะได้รับ ProcessId เพื่อฆ่า:

wmic process where caption="test.exe" get commandline,processid

wmicนอกจากนี้ยังมีสวิทช์ไปยังเอาท์พุทเป็น csv ดังนั้น:

wmic /output:c:\temp\proc.csv process where caption="test.exe" get commandline,processid /format:csv

หมายเหตุ: หากคุณได้รับข้อผิดพลาดกับคนสุดท้าย ( Invalid XSL format (or) file name) คุณต้องคัดลอกcsv.xmlจากไป%WINDIR%\System32\wbem\en-US %WINDIR%\System32\wbemคุณสามารถอ่านเกี่ยวกับปัญหานี้ที่นี่


คุณสามารถใช้ PowerShell:

Get-WmiObject win32_process -Filter "name like '%test.exe'"|select CreationDate,ProcessId,CommandLine|ft -AutoSize`

ขอบคุณนั่นคือมันwmicแก้ปัญหาและสรุปวันนี้ :)
István Zachar

1
สมบูรณ์แบบ - จริง ๆ แล้วจะให้บรรทัดคำสั่งเต็ม ในตัวจัดการงานจะแสดงเพียง 300 ตัวอักษรแรกหรือมากกว่านั้น
ArtOfWarfare
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.