17

我需要使用 PowerShell 或 VBScript 以编程方式获取正在运行的应用程序列表,如 Windows 任务管理器内的“应用程序”选项卡中所示。

到目前为止,我只能找到如何使用 VBScript 和 WMI 列出进程。

4

5 回答 5

23

这让您在 PowerShell 中接近:

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

或更短的版本:

gps | ? {$_.mainwindowhandle -ne 0} | select name, mainwindowtitle
于 2008-10-10T14:22:14.297 回答
9

@Steven Murawski:我注意到,如果我使用 mainwindowhandle,我当然会得到一些正在运行的进程,但不在“应用程序”选项卡中。像 explorer 和 UltraMon 等。你可以改为使用 mainwindowtitle,因为我遇到的那些进程没有窗口标题——就像这样

gps | ? {$_.mainwindowtitle.length -ne 0} | select name, mainwindowtitle
于 2008-10-13T22:15:01.097 回答
7

从您正在寻找的命令行:

tasklist /v/v意味着详细,并将包括“应用程序运行每个进程的列表

tasklist /v /fi "imagenaem eq POWERPNT.EXE" 例如可用于过滤仅在 POWERPNT.EXE 进程下运行的应用程序。

于 2012-11-21T18:22:12.380 回答
5

这应该可以解决问题:

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

于 2008-10-10T13:46:01.577 回答
1

stahler 的答案转换为 PowerShell:

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

$word.tasks | ? {$_. 可见} | 选择名称

$word.quit()

于 2008-10-11T20:31:31.273 回答