1

В 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

Однако, используя PS из mkstools, я могу получить эти:

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-вызовов.

Как я могу показать бит /automation -Embedding в PowerShell ?

1 ответ1

1

Get-Process не возвращает информацию о командной строке, но WMI-класс Win32_Process делает. Чтобы использовать классы WMI, используйте командлет Get-WMIObject имеющий псевдоним gwmi .

Чтобы убить все объекты автоматизации Excel, вы можете использовать:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .