You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用vCenter PowerShell向导出CSV新增首列location字段

原脚本核心问题
  1. 每次循环给tempoutput.csv所有行统一添加当前站点的location,会导致上一个站点的所有记录的location被覆盖为当前站点值
  2. 每次循环导出final.csv时没有加-Append参数,会直接覆盖之前的所有输出,最终只会保留最后一个站点的数据
  3. 多余的临时文件读写步骤,既影响效率也容易出错
修正后脚本
# 先删除旧的输出文件,避免旧数据干扰
if (Test-Path final.csv) {
    Remove-Item final.csv -Force
}

$inventory = Import-Csv -Path path.csv

foreach ($i in $inventory) {
    # 连接对应vCenter
    Connect-VIServer -Server $i.vcenter -User $i.username -Password $i.password
    
    # 查询主机时直接注入location字段,且放在首列,符合输出要求
    Get-VMHost | Select-Object -Property @{Name='location'; Expression={$i.location}}, Name, Version | 
        Export-Csv -Path final.csv -NoTypeInformation -Append
    
    # 断开连接
    Disconnect-VIServer -Server $i.vcenter -Force -Confirm:$false
}
调整说明
  • 通过计算属性直接在查询主机时就添加对应站点的location字段,天然保证每一行的location和所属站点匹配,不会出现覆盖错误
  • 导出时添加-Append参数,每个站点的主机数据会依次追加到最终输出文件,不会覆盖之前的结果
  • 输出列顺序天然是location > name > version,完全匹配需求的CSV格式
  • 去掉了冗余的临时文件读写逻辑,执行效率更高

内容的提问来源于stack exchange,提问作者Dishant Dhokia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 19:06:03