如何使用任务列表获取调用任务的命令?


18

Windows任务管理器有一列标记为“ 命令行”的列,其中显示了启动给定任务的命令以及所有开关和参数,例如:

test.exe -V -A 127.0.0.1 -P 6062

现在,我必须确定正在侦听某个端口和/或被某个交换机组合调用的某个任务。我的目标是关闭选定的任务,而不是其他任务,因此,如果有多个test.exe正在运行的任务,我不能简单地关闭由以下命令返回的所有任务:

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

不幸的是,似乎tasklistpslist此处)都无法返回“ 命令行”字段。我该如何克服这个问题?


也许您可以netstat -aon | grep \.0:6062对端口6062 进行某些操作,最后一列将是程序的PID。不确定是否足够您使用。tasklist /FI "PID eq <PID>"会再次给您可执行文件。
瑞克(Rik)2013年

@Rik遗憾的是,这还不够,因为端口本身不足以标识正确的任务,因此也必须查看命令行参数。
的IstvánZachar

无法想象多个程序在同一端口上侦听... :)但是必须有可能process explorer从Sysinternals 获取参数... 可以在gui中显示这些参数。因此,信息必须在某处。
瑞克(Rik)2013年

您是否使用了powershell命令?像<<< Get-WmiObject win32_process -Filter“ name like'%test.exe'” | select CreationDate,ProcessId,CommandLine | ft -AutoSize` >>>参见此处
Rik

@Rik,端口当然不同,但是我还必须提取命令行参数,以检查任务是否是我需要杀死的任务。
的IstvánZachar

Answers:


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解决了问题,这一天结束了。:)
伊什特万Zachar

1
完美-实际上提供了完整的命令行。在任务管理器中,它仅显示前300个字符左右。
ArtOfWarfare
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.