Как получить список запущенных приложений, использующих PowerShell или VBScript - PullRequest
14 голосов
/ 10 октября 2008

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

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

Ответы [ 5 ]

17 голосов
/ 10 октября 2008

Это сблизит вас в PowerShell:

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

Или более короткая версия:

gps | ? {$_.mainwindowhandle -ne 0} | select name, mainwindowtitle
7 голосов
/ 14 октября 2008

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

gps | ? {$_.mainwindowtitle.length -ne 0} | select name, mainwindowtitle
5 голосов
/ 21 ноября 2012

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

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

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

5 голосов
/ 10 октября 2008

Это должно сработать:

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

1 голос
/ 12 октября 2008

Ответ Шталера преобразован в PowerShell:

$ word = new-object -com 'word.application'

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

$ word.quit ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...