在 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() }