Azure 抵扣券 微软云命令行工具CLI使用
你有没有过这种体验:点开 Azure 门户,鼠标划拉十分钟,终于找到「新建虚拟机」按钮,刚填完第三页表单,突然弹出「位置不可用」——然后默默关掉页面,泡了杯枸杞水,决定今晚还是用命令行。
别急,这不是你技术差,是 Azure 门户太像一个精心设计的迷宫型自助餐厅:菜全有,但找勺子得先过三道旋转门。而 Azure CLI(Azure Command-Line Interface),就是那个揣着万能钥匙、穿着工装裤、一边啃能量棒一边给你抄近道的运维老哥。
Azure 抵扣券 一、装它,别信官网那句「一键安装」
官网写着「curl | bash」或「choco install azure-cli」,听起来很帅。但现实是:
- Mac 用户用 Homebrew 装完发现
az命令不存在?——检查brew doctor,八成是 shell 配置没生效,重启终端不顶用,得手动把/opt/homebrew/bin加进~/.zshrc; - Windows 用户双击 MSI 安装包,一路「下一步」后在 CMD 里敲
az --version,返回「不是内部或外部命令」?——不是你装错了,是 MSI 默认没勾选「Add to PATH」,得重装,勾上,再重启; - Linux 上用
apt装完版本还是 2.30?——因为 Ubuntu 官方源太保守,直接去 微软官方源 拉最新 deb 包,顺手干掉旧版:sudo apt remove azure-cli && sudo apt autoremove。
记住:CLI 不是装完就赢,是装完+PATH+重启+验证三连击才算通关。
二、登录?别只记得 az login
az login 确实能弹浏览器让你扫码,但生产环境谁天天扫二维码?试试这个:
az login --service-principal -u <app-id> -p <client-secret> --tenant <tenant-id>
——适合脚本化、CI/CD、半夜三点自动扩容时无人值守。不过提醒一句:-p 后跟明文密码?不行。要么用 --password @/path/to/secret.txt(文件读取),要么更安全地用 Azure Key Vault 配合 az keyvault secret show 动态取值。
还常有人登错租户——比如公司有 dev/test/prod 三个租户,az login 默认进第一个。查当前上下文:az account show;切换租户:az account set --subscription "Prod-East-US"。建议登录后立刻执行:az account list --output table,把所有订阅 ID 和名称截图存桌面——这比翻邮件找订阅名快十倍。
三、资源组:你的云上收纳盒,别乱扔东西
Azure 里一切资源(VM、数据库、存储桶)必须塞进资源组(Resource Group)。它不是文件夹,是逻辑边界+权限单元+删除开关。建一个试试:
az group create --name rg-prod-web --location eastus --tags env=prod team=web
看,--tags 不是装饰品。等三个月后财务问「这笔 $127 的支出是谁的」,你敲一行:az resource list --tag env=prod --query "[?contains(name, 'web')].{Name:name, Type:type, Location:location}" -o table,结果秒出——比翻 Excel 强。
删资源组?az group delete --name rg-test-junk --yes --no-wait。注意:--no-wait 让删除后台跑,你接着干活;不加它?你得盯着终端等两分钟,期间连 ls 都不敢敲,怕中断。
四、真·实战:1 分钟起一台带公网 IP 的 Linux VM
别再点门户了!以下命令,复制粘贴,回车,喝口咖啡,VM 就活了:
# 1. 创建带公网 IP 的 VM(Ubuntu 22.04,B2s 规格)
az vm create \
--resource-group rg-demo \
--name vm-quick \
--image Ubuntu2204 \
--size Standard_B2s \
--admin-username azureuser \
--generate-ssh-keys \
--public-ip-sku Standard
解释下关键参数:
--generate-ssh-keys:自动生成密钥对,私钥存在 ~/.ssh/id_rsa,不用手搓 ssh-keygen;
--public-ip-sku Standard:用标准 SKU 公网 IP,支持出站规则和静态 IP,免费版(Basic)会抽风式断连;
--size Standard_B2s:B 系列突发型,便宜抗造,测试够用,别一上来就选 Standard_D8ds_v5,那不是 VM 是超算。
连上去?az vm show -g rg-demo -n vm-quick --query publicIps -o tsv 拿 IP,然后:ssh azureuser@<IP>。如果提示「Connection refused」?先确认 NSG(网络安全组)是否放行 22 端口——CLI 会自动建 NSG,但默认只开 22,没错,它懂你。
五、那些年,我们踩过的 CLI 坑
- 「Invalid location」报错:不是你拼错了
eastus,是当前订阅没开通该区域。查支持区域:az account list-locations --query "[?metadata.regionType=='Physical'].{Name:name, DisplayName:displayName}" -o table; - JSON 解析失败:用
--query时别手抖多打空格,[?name=='myvm']写成[? name == 'myvm' ]直接报错; - PowerShell 里斜杠变反斜杠:Windows 上用 PowerShell 运行 CLI,路径写
C:\temp\config.json?错。PowerShell 把\当转义符,一律用正斜杠:C:/temp/config.json或双反斜杠:C:\\temp\\config.json; - 别名救星:每次敲
az vm list --show-details --query "[?provisioningState=='Succeeded'].{Name:name, Size:hardwareProfile.vmSize, IP:publicIps}" -o table太长?定义别名:alias azvmok='az vm list --show-details --query "[?provisioningState==\'Succeeded\'].{Name:name, Size:hardwareProfile.vmSize, IP:publicIps}" -o table',加到~/.bashrc或$PROFILE,从此世界清静。
六、最后送你三条铁律
- 永远先
az version,再动手:2.40+ 才支持 ARM64 VM,2.35 不认--enable-auto-shutdown,版本差半步,命令全报红; - 所有
az xxx create命令,加--no-wait不吃亏:创建存储账户、SQL DB、AKS 集群动辄 3–5 分钟,加它,你去接水、回消息、摸鱼,回来az xxx show看状态就行; - 别信「--help」里的示例:它常省略必要参数。比如
az storage account create --help示例里没写--sku Standard_LRS,但不加它直接报错——查文档底部「Required Parameters」栏,那里才是真相。
写到这儿,你可能已经打开终端,手指悬在键盘上,准备敲下第一行 az。很好。记住:CLI 不是取代图形界面,而是当你第 7 次点错「高级」选项卡、第 12 次等加载圈转完、第 1 次想批量改 50 台 VM 的 OS 更新策略时——它就在那儿,不声不响,但永远 ready。
祝你命令行畅通,报错精准,深夜扩容不心梗。


