在PowerShell执行Get命令时能否添加自动计数列?
无需数组实现PowerShell查询结果的序号列导出CSV
当然可以不用数组实现这个需求,你原本的思路其实已经是流式处理(不依赖数组),只需要注意提前初始化序号变量,避免出现异常值。
直接用以下命令即可:
# 初始化序号起始值 $suborder = 1 # 流式处理并导出CSV Get-VMHost | Select-Object @{Name="Order";Expression={$suborder++}}, Name, Version, Build | Export-Csv -Path .\smth.csv -NoTypeInformation
原理说明
Get-VMHost会逐个输出虚拟机主机对象,而非一次性把所有结果存入数组;Select-Object在处理每个对象时,执行$suborder++表达式,让序号自动递增,全程是管道流式处理,不需要额外数组存储;- 加上
-NoTypeInformation参数可以去掉CSV文件开头的类型注释行,让输出的CSV更规范。
注意事项
- 序号变量
$suborder必须在管道命令外部初始化,如果放到管道里,每次处理对象时变量会被重置,导致序号全部为1; - 如果需要重复执行命令,记得重新初始化
$suborder,避免上次的序号值影响结果。
内容的提问来源于stack exchange,提问作者Black Shark
相关产品推荐
相关产品推荐

