Azure-Cli 使用技巧

[TOC]

全局设置

参数全称 参数缩写 搭配使用 功能
--help -h 任意 查看帮助
--name -n 任意 操作对象的名称
--resource-group -g 任意 操作对象所属的资源组名称
--output table -o table 常用于 list 之后 输出格式化,表格方式
--output tsv -o tsv 常用于 list 之后 输出格式化
--output none -o none 常用于 create 之后 输出格式化,创建之后不返回json内容
--yes -y 常用于 delete 之后 静默方式删除
--query "[].<列名>" 无 常用于 list 之后 查询json返回值中特定列名对应的value值
  • 注意 --query 可以同时返回多个列的value值,如下:
:: 查看全部的返回值
az account list

:: 查看单个列的返回值
az account list --query "[?isDefault].name" -o table

:: 查看多层结构的返回值
az account show --query "{user:user.name}" -o tsv

:: 查看多个列的返回值,并自定义返回列的名称
az account list --query "[].{cloudName:cloudName, Subscription:name, TenantId:tenantId}" -o table

安装与卸载

  • 安装 azure-cli 2.79.0
cd /d d:\
wget -c http://iso.sqlfans.cn/cloud/azure/azure-cli-2.79.0-x64.msi
start azure-cli-2.79.0-x64.msi
  • 查看版本和帮助
az version
az vm create -h
  • 更新与卸载
:: 更新版本
az upgrade

:: 查看已安装的版本
winget list | findstr "Azure"

:: 卸载指定版本
winget uninstall --id "Microsoft.AzureCLI" --version 2.79.0 --force

:: 删除数据
rd /s /q C:\Users\Administrator\.azure

登入与登出 login

:: 列出可用的云,只有一个处于激活状态
az cloud list -o table

:: 切换当前激活的云端,其中 AzureChinaCloud 为世纪互联运营的中国区
:: 海外区 https://portal.azure.com
:: 中国区 https://portal.azure.cn
az cloud set --name AzureChinaCloud 
az cloud set --name AzureCloud

:: 登录方式1:以交互方式登录(通常会打开浏览器)
az login

:: 登录方式2:使用租户ID登录,比如 c75dfba6-6974-49ae-9e4e-fd137a08d692
az login --tenant c75dfba6-6974-49ae-9e4e-fd137a08d692

:: 登录方式3:使用设备代码登录(可避开 WS-Trust 端点问题)https://microsoft.com/devicelogin
az login --use-device-code

:: 登录方式4:使用账号密码登录
az config set core.enable_broker_on_windows=false
az login --username <username> --password <password>

:: 清除订阅缓存,在技术上与注销Azure的过程不同
az account clear

:: 登出azure
az logout

扩展 extension

:: 列出已安装的 extension 扩展,默认无任何扩展
az extension list -o table

:: 列出所有公开可用的扩展
az extension list-available -o table

:: 列出特定扩展的详细信息
az extension list-available --show-details --query subscription

:: 列出扩展的可用版本
az extension list-versions --name subscription

:: 安装扩展,亦可指定版本
az extension add --name subscription
az extension add --name subscription --version 0.1.3

:: 升级扩展(如果已安装)
az extension add --upgrade --name subscription

:: 按名称更新扩展
az extension update --name subscription

:: 显示特定的扩展
az extension show --name subscription

:: 删除扩展
az extension remove --name subscription

订阅 account

:: 默认 az account 没有 create 子命令,需要安装扩展
az extension add --name subscription
az extension list -o table

:: 获取 enrollment-account-name,比如 44xxxx-xxxx-xxxx-xxxx-a8xxxxe
az billing enrollment-account list --query "[].name" -o tsv

:: 创建 subscription,需要安装 subscription 扩展,同时用到 enrollment-account-name
az account create --enrollment-account-name 44xxxx-xxxx-xxxx-xxxx-a8xxxxe --offer-type MS-AZR-0017P --display-name mysub

:: 查看所有账号的CloudName、订阅名、订阅ID、租户ID等
az account list --all
az account list -o table
az account show -o table

:: 查看当前登录的用户名
az account show
az account show --query "{user:user.name}" -o tsv

:: 获取当前默认的租户ID,比如 c75dfba6-6974-49ae-9e4e-fd137a08d692
az account list --query "[?isDefault].tenantId" -o tsv

:: 获取当前默认的订阅名称及订阅ID,比如 MyAzure 对应ID为 966dc049-8306-40e8-bfbb-2d2fda1f3568
az account list --query "[?isDefault].name" -o tsv
az account list --query "[?isDefault].id" -o tsv

:: 更改当前订阅,根据订阅名称或订阅ID,比如 MyAzure
az account set --subscription "MyAzure"
az account set --subscription "966dc049-8306-40e8-bfbb-2d2fda1f3568"

:: 查看azure的主要区域
az account list-locations --query "[].{Name:name, DisplayName:displayName}" -o table

资源组 group

:: 先切换订阅,若未指定订阅,则会将资源组创建到当前订阅下面
az account set --subscription "MyAzure"

:: 创建资源组,比如 MyResourceGroup
az group create --name MyResourceGroup --location eastasia --subscription MyAzure

:: 查看资源组清单
az group list -o table

:: 删除资源组
az group delete --name MyResourceGroup --yes

角色分配 role assignment

:: 列出当前订阅id,比如 966dc049-8306-40e8-bfbb-2d2fda1f3568
az account list --query "[?isDefault].id" -o tsv

:: 列出角色分配,比如当前订阅id对应的 Scope 为 /subscriptions/966dc049-8306-40e8-bfbb-2d2fda1f3568
az role assignment list
az role assignment list -o table
az role assignment list --query "[].scope" -o tsv
az role assignment list --query "[].{RoleName:roleDefinitionName, Scope:scope}" -o table

:: 列出订阅范围内具有 Owner 角色的角色分配
az role assignment list --role Owner --scope /subscriptions/966dc049-8306-40e8-bfbb-2d2fda1f3568

:: 列出资源组(比如 MyResourceGroup)内具有 Owner 角色的用户清单
set mygroup=MyResourceGroup
set myscope=/subscriptions/966dc049-8306-40e8-bfbb-2d2fda1f3568
az role assignment list --role Owner --scope %myscope%/resourceGroups/%mygroup% --query "[].{UserName:principalName,ResourceGroup:resourceGroup,RoleName:roleDefinitionName}" -o table

:: 创建角色分配,将某用户添加到指定资源组的 Owner 角色中
set mygroup=MyResourceGroup
set myassignee=demo@anhuichaodouyaoutlook.onmicrosoft.com
set myscope=/subscriptions/966dc049-8306-40e8-bfbb-2d2fda1f3568/resourceGroups/%mygroup%
az role assignment create --assignee %myassignee% --role Owner --scope %myscope%

:: 列出角色分配的更改日志
az role assignment list-changelogs
az role assignment list-changelogs --start-time 2025-11-28T00:00:00Z --end-time 2025-11-29T23:59:59Z
az role assignment list-changelogs --query "[].{caller:caller,Action:action,ToUser:principalName,ScopeName:scopeName,RoleName:roleName,Timestamp:timestamp}" -o table

:: 从 JSON 字符串更新用户、组或服务主体的现有角色分配
az role assignment update --role-assignment assignment.json

:: 删除角色分配,将某用户从指定资源组的 Owner 角色中移除
set mygroup=MyResourceGroup
set myassignee=demo@anhuichaodouyaoutlook.onmicrosoft.com
set myscope=/subscriptions/966dc049-8306-40e8-bfbb-2d2fda1f3568/resourceGroups/%mygroup%
az role assignment delete --assignee %myassignee% --role Owner --scope %myscope%

:: 删除订阅范围内具有 Reader 角色的所有角色分配
az role assignment delete --role Reader --scope /subscriptions/00000000-0000-0000-0000-000000000000

:: 删除订阅范围内被分配者的所有角色分配
az role assignment delete --assignee 00000000-0000-0000-0000-000000000000 --scope /subscriptions/00000000-0000-0000-0000-000000000000
  • 附:一个完整的角色分配的创建及清理过程,示例将 demo 用户添加到资源组 grouptemp 的 Owner 角色中
:: 创建过程,依次创建 资源组-角色分配
az group create --name grouptemp --location eastasia --subscription MyAzure -o none
az group list -o table

:: 查看当前订阅id及其对应的 scope
az account list --query "[?isDefault].id" -o tsv
az role assignment list --query "[].{RoleName:roleDefinitionName, Scope:scope}" -o table

:: 定义当前订阅id对应的 scope
set mygroup=grouptemp
set myassignee=demo@anhuichaodouyaoutlook.onmicrosoft.com
set myscope=/subscriptions/966dc049-8306-40e8-bfbb-2d2fda1f3568/resourceGroups/%mygroup%

:: 将 demo 用户添加到资源组 grouptemp 的 Owner 角色中
az role assignment create --assignee %myassignee% --role Owner --scope %myscope%

:: 确认 demo 用户对该资源组拥有 Owner 角色
az role assignment list-changelogs --query "[].{caller:caller,Action:action,ToUser:principalName,ScopeName:scopeName,RoleName:roleName,Timestamp:timestamp}" -o table
az role assignment list --role Owner --scope %myscope% --query "[].{UserName:principalName,ResourceGroup:resourceGroup,RoleName:roleDefinitionName}" -o table


:: 清理过程,依次删除 角色分配-资源组
az role assignment delete --assignee %myassignee% --role Owner --scope %myscope%
az group delete --name grouptemp --yes

虚拟网络 network vnet

:: 列出虚拟网络 vpc
az network vnet list -o table

:: 创建虚拟网络,必须指定资源组
az network vnet create -g MyResourceGroup --name vnet-eastasia-1 --address-prefix 10.0.0.0/16 --subnet-name snet-eastasia-1 --subnet-prefixes 10.0.0.0/24

:: 删除虚拟网络,必须指定资源组
az network vnet delete -g MyResourceGroup -n vnet-eastasia-1

AD域服务 ad ds

  • 2023年10月1日,Microsoft 将 Azure Active Directory (Azure AD) 更名为 Microsoft Entra ID1,以介绍产品的多云多平台功能、缓解与 Windows Server Active Directory 的混淆,并统一 Microsoft Entra 产品系列。
  • 参考 ad ds:https://learn.microsoft.com/zh-cn/cli/azure/ad/ds
:: 默认 az ad ds 没有 create 子命令,需要安装扩展
az extension add --name ad
az extension list -o table

:: 列出域服务,仍在开发中,坑爹...
az ad ds list

:: 创建域服务,仍在开发中,坑爹...
az ad ds create --domain "xxx.com" --replica-sets location="East Asia" subnet-id="<subnetId>" --name "xxx.com" -g MyResourceGroup

:: 删除域服务
az ad ds delete --name "xxx.com" --resource-group "MyResourceGroup"
  • 附:一个完整的域服务的创建及清理过程,示例资源组 grouptemp
:: 创建过程,依次创建 资源组-虚拟网络-域服务
az group create --name grouptemp --location eastasia --subscription MyAzure
az group list -o table

az network vnet create -g grouptemp --name vnet-eastasia-ad --address-prefix 10.0.0.0/16 --subnet-name snet-eastasia-ad --subnet-prefixes 10.0.0.0/24
az network vnet list -o table

az ad ds create --domain "xxx.com" --replica-sets location="East Asia" subnet-id="<subnetId>" --name "xxx.com" -g grouptemp

:: 清理过程,依次删除 域服务-虚拟网络-资源组
az ad ds delete --name "xxx.com" -g grouptemp
az network vnet delete --name vnet-eastasia-ad -g grouptemp
az group delete --name grouptemp --yes

资源管理

虚拟机 vm

:: 创建一个名为MyVM的虚拟机
az vm create -g MyResourceGroup -n MyVM --image UbuntuLTS --admin-username azureuser --generate-ssh-keys

:: 批量创建2台虚拟机,名字 vm_name1 vm_name2
az vm create -g MyResourceGroup -n vm_name --image centos --count 2

:: 查看虚拟机状态
az vm list --show-details
az vm list -o table
az vm list -o table -d

:: 更新某个虚拟机
az vm update -g MyResourceGroup -n vm_name --set tags.tagName=tag_name


:: 启停某个虚拟机
az vm stop -g MyResourceGroup -n vm_name
az vm start -g MyResourceGroup -n vm_name
az vm restart -g MyResourceGroup -n vm_name

:: 查看某个资源组的虚拟机
az vm list -g MyResourceGroup -o table

:: 删除一个名为MyVM的虚拟机
az vm delete -g MyResourceGroup -n vm_name --yes

数据库 mysql

:: 列出mysql
az mysql flexible-server list

应用 webapp

:: 列出所有正在运行的 web apps
az webapp list --query "[?state=='Running']"

:: 列出所有应用的名字和状态
az webapp list --query "[].{hostName: defaultHostName, state: state}"

负载均衡器 network lb

:: 列出负载均衡器
az network lb list

存储帐户 storage account

:: 创建存储帐户
az storage account create -n mystorageaccount20251128 -g MyResourceGroup -l eastasia --access-tier Cold --kind StorageV2 --sku Standard_LRS -o none

:: 查看存储帐户
az storage account list -o table

:: 查看存储帐户,只看关心的内容
az storage account list --query "[].name" -o tsv
az storage account list --query "[].{ResourceGroup:resourceGroup, StorageAccountName:name, Kind:kind, Location:location}" -o table

:: 删除存储帐户
az storage account delete --name mystorageaccount20251128 -g MyResourceGroup --yes

文件共享 storage share-rm

:: 创建存储帐户,添加 -o none 不返回结果
az storage account create -n mystorageaccount20251128 -g MyResourceGroup -l eastasia --access-tier Cold --kind StorageV2 --sku Standard_LRS -o none
az storage account list --query "[].{ResourceGroup:resourceGroup, StorageAccountName:name}" -o table

:: 创建文件共享
az storage share-rm create --name myshare -g MyResourceGroup --storage-account mystorageaccount20251128 --access-tier Cool --quota 10

:: 修改文件共享
az storage share-rm update --name myshare -g MyResourceGroup --storage-account mystorageaccount20251128 --quota 12

:: 确认共享目录
az storage share-rm list -g MyResourceGroup --storage-account mystorageaccount20251128 -o table
az storage share-rm list -g MyResourceGroup --storage-account mystorageaccount20251128 --query "[].name" -o tsv

:: 删除经典文件共享
az storage share-rm delete -g MyResourceGroup --storage-account mystorageaccount20251128 --name myshare --yes

:: 删除存储帐户
az storage account delete --name mystorageaccount20251128 -g MyResourceGroup --yes
  • 附:一个完整的 SMB 协议的 Share file 创建及清理过程,示例资源组 grouptemp

注:若管理员创建了某个资源组之后,则只需将特定用户添加该资源组的 owner 角色,则该用户就可以配置文件共享,参考这里

:: 创建过程,依次创建 资源组-存储帐户-共享目录
az group create --name grouptemp --location eastasia --subscription MyAzure -o none
az group list -o table

az storage account create -n stoaccfile2025 -g grouptemp -l eastasia --access-tier Cold --kind StorageV2 --sku Standard_LRS -o none
az storage account list --query "[].{ResourceGroup:resourceGroup, StorageAccountName:name}" -o table

az storage share-rm create --name myshare -g grouptemp --storage-account stoaccfile2025 --access-tier Cool --quota 10 -o none
az storage share-rm list -g grouptemp --storage-account stoaccfile2025 --query "[].name" -o tsv

:: 清理过程,依次删除 共享目录-存储帐户-资源组
az storage share-rm delete --name myshare -g grouptemp --storage-account stoaccfile2025 --yes
az storage account delete --name stoaccfile2025 -g grouptemp --yes
az group delete --name grouptemp --yes

资源 resource

:: 列出资源
az resource list -o table

:: 通过从文件加载 JSON 配置来创建资源
az resource create -g MyResourceGroup --name myApiApp --resource-type Microsoft.web/sites --is-full-object --properties @jsonConfigFile

:: 转移资源
storageAccount=$(az resource show --resource-group $srcResourceGroupName --name $storageAccountName --resource-type Microsoft.Storage/storageAccounts --query id -o tsv) &&
az resource move --destination-group $destResourceGroupName --ids $storageAccount

:: 删除虚拟机
az resource delete -g MyResourceGroup --name MyVm --resource-type "Microsoft.Compute/virtualMachines"

:: 删除文件共享(Microsoft.FileShares)
az resource delete -g MyResourceGroup --name myshare --resource-type "Microsoft.FileShares/fileShares"
  • 附:一个完整的资源转移的 创建及清理过程,示例资源组 grouptemp
:: 创建过程,依次创建 资源组-存储帐户 用于测试
az group create --name grouptemp --location eastasia --subscription MyAzure -o none
az group list -o table

az storage account create -n mystorageaccount20251128 -g grouptemp -l eastasia --access-tier Cold --kind StorageV2 --sku Standard_LRS -o none
az storage account list --query "[].{ResourceGroup:resourceGroup, StorageAccountName:name}" -o table

:: 转移过程,先获取资源id,再根据资源id将其从一个资源组移到另一个资源组
az resource show --resource-group grouptemp --name mystorageaccount20251128 --resource-type Microsoft.Storage/storageAccounts --query id -o tsv
myids=/subscriptions/******/resourceGroups/grouptemp/providers/Microsoft.Storage/storageAccounts/mystorageaccount20251128
az resource move --destination-group MyResourceGroup --ids $myids

:: 清理过程,依次删除 存储帐户-资源组
az storage account delete --name mystorageaccount20251128 -g MyResourceGroup --yes
az group delete --name grouptemp --yes
1. Azure Active Directory 的新名称:https://learn.microsoft.com/zh-cn/entra/fundamentals/new-name ↩
Copyright © www.sqlfans.cn 2021 - 2026 All Right Reserved更新时间: 2025-12-02 19:04:25

results matching ""

    No results matching ""