PowerShell获取指定程序版本时输出格式优化问题求助
解决PowerShell获取程序信息时重复表头的问题
你重复调用Get-WmiObject并分别追加输出,导致每次输出都会生成独立的表头。要实现只显示一次表头,只需一次性查询并过滤目标程序,再统一输出即可。
方法1:用-in操作符一次性过滤多个程序名
Get-WmiObject -Class Win32_Product | Where-Object { $_.Name -in "Microsoft Policy Platform", "Mitel Connect" } | Select-Object Name, Version >> c:\Temp\Programs.txt
方法2:使用现代的Get-CimInstance(推荐,Get-WmiObject已被弃用)
Get-CimInstance -ClassName Win32_Product | Where-Object { $_.Name -in "Microsoft Policy Platform", "Mitel Connect" } | Select-Object Name, Version >> c:\Temp\Programs.txt
原理说明
- 原写法两次执行完整管道流程,每次
Select-Object输出都会包含表头,追加到文件时自然重复。 - 合并为一次查询后,所有匹配结果作为同一组对象输出,只会生成一次表头。
如果需要分步收集结果再输出,也可以先把结果存入变量,最后统一写入文件(效率略低于一次性查询):
$programs = @() $programs += Get-WmiObject -Class Win32_Product | Where-Object Name -eq "Microsoft Policy Platform" $programs += Get-WmiObject -Class Win32_Product | Where-Object Name -eq "Mitel Connect" $programs | Select-Object Name, Version >> c:\Temp\Programs.txt
内容的提问来源于stack exchange,提问作者BatchKing70
相关产品推荐
相关产品推荐

