2008-10-10 3 views
12

Мне нужно программно получить список запущенных приложений, как показано на вкладке «Приложения» внутри диспетчера задач Windows, используя PowerShell или VBScript.Как получить список запущенных приложений с помощью PowerShell или VBScript

Все, что я могу найти до сих пор, - это список процессов, использующих VBScript и WMI.

ответ

6

Это должно сделать трюк:

Set Word = CreateObject("Word.Application") 
Set Tasks = Word.Tasks 
For Each Task in Tasks 
    If Task.Visible Then Wscript.Echo Task.Name 
Next 
Word.Quit 

http://msdn.microsoft.com/en-us/library/bb212832.aspx

+0

Aargh .. vbscript !!! :) Хороший ответ, хотя :) – 2008-10-10 19:43:50

16

Это заставляет вас закрыть в PowerShell:

get-process | where-object {$_.mainwindowhandle -ne 0} | select-object name, mainwindowtitle 

или сокращенный вариант:

gps | ? {$_.mainwindowhandle -ne 0} | select name, mainwindowtitle 
1

stahler «S ответить превращали в PowerShell:

$ слово = New-Object -COM 'Word.Application'

$ word.tasks | ? {$ _. visible} | Выберите имя

$ word.quit()

+0

Ах - заставьте меня выглядеть ленивым! (Виновный) – stahler 2008-10-14 12:52:01

7

@Steven Муравски: Я заметил, что если бы я использовал MainWindowHandle я хотел бы получить какой-то процесс, который был запущен, конечно, но не на вкладке «Приложения». Как исследователь и UltraMon и т.д. Вы можете кондиционировать прочь mainwindowtitle вместо этого, так как те, процесс, который я столкнулся не имеют заголовки окон - вот так

gps | ? {$_.mainwindowtitle.length -ne 0} | select name, mainwindowtitle 
4

из командной строки вы ищете:

tasklist /v/v означает многословным и будет включать в себя список «приложение, работающее от каждого процесса

tasklist /v /fi "imagenaem eq POWERPNT.EXE" , например, может быть использован для фильтрации только приложение, работающее под процессом Powerpnt.exe.