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

如何使用govc获取指定文件夹内虚拟机及其关联存储集群的逗号分隔格式输出

如何使用govc获取指定文件夹内虚拟机及其关联存储集群的逗号分隔格式输出

我来帮你搞定这个需求!要获取指定文件夹下虚拟机和对应的存储集群(或数据存储)的逗号分隔输出,可以用govc结合文本/JSON解析工具来实现,具体步骤和命令如下:

先确认vCenter连接正常

首先确保你已经正确配置了govc的环境变量(比如GOVC_URL、GOVC_USERNAME、GOVC_PASSWORD),并且通过以下命令验证连接没问题:

govc about || { echo "Failed to connect to vCenter."; exit 1; }

如果连接正常,你会看到类似这样的输出:

Name:         VMware vCenter Server
Vendor:       VMware, Inc.
Version:      7.0.3
Build:        22357613
OS type:      linux-x64
API type:     VirtualCenter
API version:  7.0.3.0

核心命令实现

方法一:用jq解析JSON输出(推荐,更稳定)

如果你的系统安装了jq(Linux/macOS可通过apt、brew等包管理器安装),这是最可靠的方式:

govc vm.info -folder "/你的数据中心名称/vm/目标文件夹名称" -json | jq -r '.[] | .Name + ", " + .Storage.Parent.Name'

命令说明:

  • -folder "/你的数据中心名称/vm/目标文件夹名称":替换成你实际的文件夹路径,比如/DC0/vm/ProductionVMs;如果不确定路径,可以用govc folder.ls /你的数据中心名称/vm查看所有虚拟机文件夹
  • -json:让govc输出结构化的JSON,避免文本格式变动导致解析出错
  • jq -r ...:提取每个虚拟机的名称和存储集群/数据存储名称,-r参数表示输出原始字符串(不带JSON引号)

方法二:无jq时用awk处理文本输出

如果没装jq,可以用awk来处理govc的默认文本输出:

govc vm.info -folder "/你的数据中心名称/vm/目标文件夹名称" | awk '/Name:/{vm=$2} /Storage Cluster|Datastore:/{if($2=="Cluster"){sc=$3}else{sc=$2}} /^$/&&vm&&sc{print vm", "sc; vm=""; sc=""}'

这个命令会逐行扫描输出,捕获虚拟机名称和对应的存储资源名称,在每个虚拟机信息块结束时输出结果。

预期输出

执行命令后,你会得到完全符合需求的逗号分隔格式:

vm1, storagecluster1
vm2, storagecluster4
vm3, storagecluster1
vm4, storagecluster2

注意事项

  • 若虚拟机直接挂载在数据存储而非存储集群,命令会自动输出数据存储名称,无需额外调整
  • 确保govc版本与你的vCenter 7.0.3兼容,避免出现API调用问题

备注:内容来源于stack exchange,提问作者unknown

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 07:58:01