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

govc pool.info对不存在资源池也返回0,如何校验资源池是否存在

目前govc的pool.info命令设计逻辑是:无论指定资源池是否存在,命令退出码都返回0,因此不能直接通过退出码判断资源池是否存在,可通过以下两种方案实现校验:

方案1:基于命令输出判空(最简实现)

存在的资源池执行govc pool.info一定会返回非空内容,不存在时输出为空,直接判断输出长度即可,适合快速脚本场景使用:

POOL_NAME="待校验的资源池名称"
# 捕获命令输出
POOL_INFO=$(govc pool.info "${POOL_NAME}")
if [ -n "${POOL_INFO}" ]; then
  echo "资源池 ${POOL_NAME} 已存在"
else
  echo "资源池 ${POOL_NAME} 不存在,可正常创建"
fi

方案2:基于JSON结构化输出判断(生产环境推荐)

搭配govc内置的-json参数输出结构化结果,用jq解析结果,可完全规避输出格式变化、特殊字符等异常场景的误判,可靠性更高:

POOL_NAME="待校验的资源池名称"
# 用jq的-e参数将判断结果转为命令退出码
if govc pool.info -json "${POOL_NAME}" | jq -e '.ResourcePools | length > 0' > /dev/null 2>&1; then
  echo "资源池 ${POOL_NAME} 已存在"
else
  echo "资源池 ${POOL_NAME} 不存在,可正常创建"
fi

如果需要避免不同集群下重名的误判,可以在资源池名称前拼接完整资源路径,例如/数据中心名称/host/集群名称/Resources/资源池名称,校验范围更精准。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 18:09:01