Bagaimana cara mendapatkan perintah yang menjalankan tugas dengan daftar tugas?

18

Pengelola tugas Windows memiliki kolom berlabel Baris Perintah yang menunjukkan perintah yang memulai tugas yang diberikan, dengan semua sakelar dan parameter, misalnya:

test.exe -V -A 127.0.0.1 -P 6062

Sekarang saya harus mengidentifikasi tugas tertentu yang mendengarkan pada port tertentu dan / atau dipanggil dengan kombinasi sakelar tertentu. Tujuan saya adalah untuk menutup tugas yang dipilih, tetapi bukan yang lain, jadi jika ada beberapa test.exetugas yang berjalan, saya tidak bisa hanya menutup semua tugas yang dikembalikan oleh:

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

Sayangnya sepertinya tidak satu tasklistpun pslist(di sini ) mampu mengembalikan bidang Baris Perintah . Bagaimana saya bisa mengatasi masalah ini?

István Zachar
sumber
Mungkin Anda dapat melakukan sesuatu dengan netstat -aon | grep \.0:6062untuk port 6062 dan kolom terakhir adalah PID dari program Anda. Tidak yakin apakah itu cukup untuk Anda. tasklist /FI "PID eq <PID>"akan memberikan eksekusi Anda lagi.
Rik
@Rik Sedih, itu tidak cukup, karena port itu sendiri tidak cukup untuk mengidentifikasi tugas yang benar, sehingga perlu untuk melihat argumen baris perintah juga.
István Zachar
Tidak dapat membayangkan beberapa program mendengarkan pada port yang sama ... :) Tetapi harus dimungkinkan untuk mendapatkan parameter ... process explorerdari Sysinternals dapat menunjukkannya di gui. Jadi info harus ada di suatu tempat.
Rik
Apakah Anda menggunakan perintah PowerShell? Seperti <<< Get-WmiObject win32_process -Filter "name like '% test.exe'" | pilih CreationDate, ProcessId, CommandLine | ft -AutoSize` >>> Lihat di sini
Rik
@ Rik, port tentu saja berbeda, tetapi saya harus mengekstrak argumen baris perintah juga untuk memeriksa apakah tugasnya adalah yang harus saya bunuh.
István Zachar

Jawaban:

35

Bagaimana dengan yang ini:

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

Dan jika Anda melakukan ini, Anda juga mendapatkan ProcessId untuk dibunuh:

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

wmicjuga memiliki peralihan ke keluaran ke csv. Begitu:

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

Catatan: Jika Anda mendapatkan kesalahan dengan yang terakhir ( Invalid XSL format (or) file name) Anda perlu menyalin csv.xmldari %WINDIR%\System32\wbem\en-USke %WINDIR%\System32\wbem. Anda dapat membaca tentang bug ini di sini .


Anda juga bisa menggunakan PowerShell:

Get-WmiObject win32_process -Filter "name like '%test.exe'"|select CreationDate,ProcessId,CommandLine|ft -AutoSize`
Rik
sumber
Terima kasih, itu saja, wmicmenyelesaikan masalah, dan ini mengakhiri hari. :)
István Zachar
1
Sempurna - ini sebenarnya memberikan baris perintah penuh. Di task manager, itu hanya menampilkan 300 karakter pertama atau lebih.
ArtOfWarfare