如何在 PowerShell 中获取其他进程信息?

如何在 PowerShell 中获取其他进程信息?

在 powershell 中,如果我执行“get-process”,我会得到

PS C:\Documents and Settings\Hello\Desktop> get-process -name excel

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
    312      11    13124      25196   121    58.50  13180 EXCEL

但是,使用 mkstools 中的 ps 我可以得到这些:

C:\\workarea\>ps | grep -i excel
13964 12:17 "C:\PROGRA~1\MICROS~2\Office10\excel.exe"  
16144 31:12 "C:\PROGRA~1\MICROS~2\Office10\excel.exe"  
13180  0:58 "C:\Program Files\Microsoft Office\Office10\excel.exe" /automation -Embedding
12624  0:56 "C:\Program Files\Microsoft Office\Office10\excel.exe" /automation -Embedding
12388  0:00 "C:\Program Files\Microsoft Office\Office10\excel.exe" /automation -Embedding

我只想杀死那些 Excel 自动化对象,并ps能帮助我区分通过“开始”菜单创建的 Excel 运行时和通过 COM 调用创建的 Excel 运行时。

我怎样才能/automation -Embedding在 powershell 中显示位?

答案1

Get-Process不返回命令行信息,但 WMI 类 Win32_Process 会返回。要使用 WMI 类,请使用Get-WMIObject别名为 的 cmdlet gwmi

要终止所有 Excel 自动化对象,您可以使用:

gwmi Win32_Process -filter "Name='Excel.exe'"| 
    where { $_.CommandLine -match '/automation -Embedding' }|
    foreach { $_.Terminate() }

相关内容