如何通过PowerShell获取组件服务的运行进程及PID
获取COM+应用的运行状态与PID
要获取COM+应用的运行状态和对应进程PID,你需要在现有代码基础上,借助COM Admin对象的**"RunningApplications"**集合获取运行中组件的信息,再与已安装应用做关联匹配。
完整PowerShell代码
# 初始化COM Admin对象 $comAdmin = New-Object -ComObject COMAdmin.COMAdminCatalog # 获取已安装的COM+应用集合 $installedApps = $comAdmin.GetCollection("Applications") $installedApps.Populate() # 获取当前运行中的COM+应用集合 $runningApps = $comAdmin.GetCollection("RunningApplications") $runningApps.Populate() # 遍历已安装应用,匹配运行状态和PID foreach ($app in $installedApps) { $appName = $app.Name # 查找对应的运行中应用 $runningApp = $runningApps | Where-Object { $_.Name -eq $appName } $status = if ($runningApp) { "运行中" } else { "未运行" } $pid = $runningApp.ProcessID -as [int] [PSCustomObject]@{ 应用名称 = $appName 状态 = $status PID = if ($pid) { $pid } else { "-" } } }
关键说明
- RunningApplications集合:该集合专门存储当前处于运行状态的COM+应用,包含
ProcessID(即PID)、Name等核心字段。 - 关联匹配:通过应用名称将已安装应用与运行中应用关联,以此判断每个应用的运行状态并提取对应PID。
- 类型转换:
ProcessID返回的是字符串类型,转换为整数类型可提升可读性。
内容的提问来源于stack exchange,提问作者Marab
相关产品推荐
相关产品推荐

