Answers:
Powershell和WMI。
Get-WmiObject Win32_Process | Select ProcessId,CommandLine
要么
Get-WmiObject -Query "SELECT CommandLine FROM Win32_Process WHERE ProcessID = 3352"
请注意,您必须具有访问此进程信息的权限。因此,如果要了解的进程在特权上下文中运行,则可能必须以admin身份运行命令。
| FL
到命令末尾。这为我扩展了所有命令行。可能还想和| Select -ExpandProperty CommandLine
其他答案当然是不错的选择,因为它们的命令行性质(在标签中我所需要的)可以在自动化系统中很好地为您服务。当然,有些人可能希望使用GUI探索此类信息,因此这里有一些替代方案。
Process Explorer是Microsoft维护的Sysinternals工具。尽管该进程的名称可能不再可用,但它可以在该进程的属性对话框中显示该进程的命令行以及启动该进程的父级。这是过程属性对话框:
如果您想更详细地了解何时启动流程以及在什么条件下启动审核,可以使用另一个名为Process Monitor的Sysinternals工具。在这里,您可以筛选“流程已开始”事件,了解流程在其中启动的环境,并查看该时间段还发生了其他事件。这是一个功能强大的程序。这是事件属性对话框:
Command Line
。
为了补充Ryan Ries有用的PowerShell答案,通过-Filter
还使用Get-CimInstance
而不是deprecated-since-v3 Get-WmiObject
cmdlet 的参数来使用更短的替代方法。
# Target a process by its PID (process ID) and report its command line,
# using the PowerShell session's own PID as an example ($PID).
(Get-CimInstance Win32_Process -Filter "ProcessId=$PID").CommandLine
# Alternatively, target process(es) by name (may return multiple processes),
# using Notepad.exe as an example.
# Select-Object is used to report both the PID and the command line.
Get-CimInstance Win32_Process -Filter "Name='Notepad.exe'" |
Select-Object ProcessId, CommandLine
该-Filter
参数实质上允许您传递WQL语句的WHERE
子句,而不是通过传递完整的查询语句。-Query