如何通过PowerShell查询名称含Arda的已安装服务版本号
原因说明
Get-Service cmdlet 默认返回的是ServiceController类型对象,这类对象仅包含服务运行状态、服务名、显示名这类服务管控相关的基础属性,本身不携带服务对应程序的版本信息,所以直接执行默认命令拿不到版本号。
操作方法
服务的版本号本质是其对应可执行文件的文件版本/产品版本,你需要先获取匹配Arda*名称规则的服务对应的可执行文件路径,再读取文件的版本信息即可,直接执行以下命令即可得到结果:
Get-CimInstance -ClassName Win32_Service -Filter "Name LIKE 'Arda%'" | ForEach-Object { if (-not $_.PathName) { return } # 处理带引号、带启动参数的服务路径,提取纯exe路径 $exePath = ($_.PathName.Trim('"') -split '\.exe', 2)[0] + '.exe' if (Test-Path $exePath) { [PSCustomObject]@{ Status = $_.State Name = $_.Name DisplayName = $_.DisplayName ExePath = $exePath Version = (Get-Item $exePath).VersionInfo.ProductVersion } } }
注意事项
- 上述命令自动兼容服务路径带双引号、路径后接启动参数的常见情况,不会出现路径识别错误
- 如果查询到的Arda相关服务是托管在
svchost.exe下的系统服务,返回的版本号为对应Windows系统的版本号,这类服务无独立版本,跟随系统迭代更新
内容的提问来源于stack exchange,提问作者Arda Ertürk
相关产品推荐
相关产品推荐

