如何透過任務清單取得呼叫任務的命令?

如何透過任務清單取得呼叫任務的命令?

Windows 工作管理員有一列標記為命令列顯示啟動給定任務的命令,以及所有開關和參數,例如:

test.exe -V -A 127.0.0.1 -P 6062

現在我必須確定正在偵聽某個連接埠和/或使用某個交換器組合呼叫的某個任務。我的目標是關閉選定的任務,而不是其他任務,因此如果有多個test.exe任務正在運行,我不能簡單地關閉以下返回的所有任務:

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

不幸的是,似乎既不是tasklist也不是pslist這裡)能夠返回命令列場地。我怎樣才能克服這個問題?

答案1

這個怎麼樣:

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`

答案2

Powershell 7:

get-process test | % commandline

答案3

至少在 Windows 11 中,上面的最佳答案不起作用,因為wmic process輸出中沒有「標題」列,因此沒有找到結果。 (是的,我意識到 wmic 在 Windows 11 中已被棄用。它仍然有效。)

相反,確實還有其他欄位可以用於該 WHERE 子句,並且它們可用於 wmic process list /?。其中當然包括name(對於進程名稱) - 以及processid上面提到的(對於 pid),所以這對我有用:

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

還有一件事:我發現我必須運行提升的命令提示字元(以管理員身份)才能查看命令列。否則輸出將命令列顯示為空:

CommandLine  ProcessId
             10496

相關內容