获取PowerShell中所有非活动进程



是否有办法列出所有非活动进程名的应用程序在PowerShell?

要获得活动进程名,我使用:

Get-Process | Select-Object Name

另外,我所说的非活动是指没有运行的应用程序的进程名。例如,获取一个完全关闭的应用程序的进程。

通常没有关于进程的信息,除非它们正在运行(除了在给定进程终止之后非常短暂的时间,以及在给定进程终止之前通过Get-Process获取的进程信息对象)。

然而,任何可执行文件都是潜在的进程;也就是说,调用一个可执行文件创建一个进程。

因此,获得候选进程名的不完全列表的一种方法是如下所示运行Get-Command:
# Note: Incomplete.
#       On Unix, omit the `-match` operation.
$potentialProcessNames = (Get-Command -Type Application).Name -match '.(exe|com)$'

这是不完整的,原因如下:

  • 它只查找可以通过$env:PATH环境变量中列出的目录找到的可执行文件,即那些只能通过名称调用的可执行文件。

  • 换句话说:可以在这些目录之外有可执行文件,它们仍然可以通过它们的路径调用。

  • 找到这些不仅非常耗时,因为它需要搜索所有可用的驱动器,它仍然是不完整的,因为可以通过UNC路径而不是通过映射的驱动器来调用可执行文件。

最新更新