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

如何在Windows的Git Bash中向az命令行传递Azure资源ID?

Git Bash中Azure CLI资源ID路径转换问题的解决办法

问题场景

在Git Bash中定义Azure虚拟机资源ID数组:

VMS=( 
"/subscriptions/d...8/resourceGroups/xyz/providers/Microsoft.Compute/virtualMachines/cks-master" 
"/subscriptions/d...8/resourceGroups/xyz/providers/Microsoft.Compute/virtualMachines/cks-worker" 
)

执行启动命令 az vm start --ids ${VMS[@]} 时,Git Bash会自动把以/开头的资源ID转换成Windows本地路径(如C:/Program Files/Git/subscriptions/...),导致Azure CLI报错资源ID无效。尝试给资源ID添加双斜杠//的方法也不适用,因为Azure不接受这种格式的资源ID。

解决办法

1. 临时禁用路径转换

Git Bash基于MSYS环境,可通过MSYS_NO_PATHCONV环境变量临时禁用路径自动转换,执行命令时添加该变量即可:

MSYS_NO_PATHCONV=1 az vm start --ids "${VMS[@]}"

注意给${VMS[@]}加上双引号,确保数组元素被正确传递。

2. 全局禁用路径转换(可选)

若需频繁执行类似Azure CLI命令,可在Git Bash的配置文件(如~/.bashrc或~/.profile)中添加以下配置,全局禁用路径转换:

export MSYS_NO_PATHCONV=1

保存配置后重启Git Bash,后续所有命令都会自动禁用路径转换。

3. 单引号包裹资源ID(备选)

定义数组时用单引号包裹资源ID,避免Git Bash提前解析路径:

VMS=( 
'/subscriptions/d...8/resourceGroups/xyz/providers/Microsoft.Compute/virtualMachines/cks-master' 
'/subscriptions/d...8/resourceGroups/xyz/providers/Microsoft.Compute/virtualMachines/cks-worker' 
)

执行命令时仍需配合MSYS_NO_PATHCONV=1:

MSYS_NO_PATHCONV=1 az vm start --ids "${VMS[@]}"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 16:25:25