﻿# Azure CLI 2.0 新手上路指南

算一算 Azure 也用了快 9 年，由於用的大多是 PaaS 服務，許多服務大多只要設定一次，然後設定完 CI/CD 就全部自動化了，因此很少有機會去學習 CLI 命令列工具使用。但最近碰 IaaS 比較多一些，所以有認真的玩了一下新版的 Azure CLI 2.0 命令列介面，本篇文章將分享幾個新手上路的注意事項與相關學習資源。

要開始上手 Azure CLI 2.0 的使用，其實最好的文件就在 [Azure CLI 2.0 | Microsoft Docs](https://learn.microsoft.com/zh-tw/cli/azure/overview?view=azure-cli-latest) 官方文件庫中，全中文的翻譯，幾乎沒有什麼進入障礙。

## 建立 Azure CLI 2.0 命令列環境

基本上目前有兩種執行 Azure CLI 2.0 的方式：

1.  透過 [Azure Cloud Shell](https://learn.microsoft.com/zh-tw/azure/cloud-shell/overview) 在瀏覽器中使用，直接登入 Azure Portal 就可以立即開始使用。
2.  透過[安裝 az 工具](https://learn.microsoft.com/zh-tw/cli/azure/install-azure-cli?view=azure-cli-latest)在命令提示字元下使用，目前支援 macOS、Linux 和 Windows 作業系統。

-   在 Windows 平台安裝 az 我強烈建議你在 WSL ( Windows Subsystem on Linux ) 環境下安裝，會比在 Windows 命令提示字元下好用很多。
-   在 WSL 環境下，輸入 az 之後，按下兩個 Tab 鍵都會自動顯示參數建議，非常方便喔！

## 查詢 az 版本

> az -v

## 登入 Azure 身分

> az login

## 登入 Azure 身分 (直接帳號密碼登入)

此命令不適用於微軟帳戶與已啟用二階段驗證的帳戶

> az login -u <username> -p <password> 

## 登入 Azure 身分 (使用 [Service Principal](https://learn.microsoft.com/en-us/azure/active-directory/develop/active-directory-application-objects) 身分登入)

> az login --service-principal -u "http://my-app" -p <password> --tenant <tenant>  
> az login --service-principal -u "*userid*" -p "*password*" --tenant "*tenantId*"

## 查詢目前選中的訂用帳戶

> az account show

## 列出所有訂用帳戶

> az account list  
> az account list -o table

## 列出所有訂用帳戶 (重新載入清單)

如果你已經登入成功，登入之後才加入權限的訂閱不會自動更新訂用帳戶清單，你必須加上 \--refresh 才會更新！

> az account list -o table \--refresh

## 設定預設訂用帳戶

> az account set --subscription "*SubscriptionId*"

## 進入互動模式 ( 對初學者來說相當實用 )

> az interactive

常用快速鍵：

-   F1            Layout
-   F2           Defaults
-   F3           Keys
-   Ctrl+D    Quit
-   Ctrl+L     Clear Screen

## 查詢 Azure 資源可以建立的所在區域

> az account list-locations -o table

## 建立資源群組

> az group create --name *myResourceGroup* --location *eastus*

## 刪除資源群組

> az group delete --name *myResourceGroup*

## 列出所有此訂閱的使用者角色

> az role assignment list --all -o table

## 列出所有 VM 清單

> az vm list --out table

## 列出所有 VM 清單 ( 使用 [JMESPath](http://jmespath.org) 查詢語法 )

> az vm list --query \[\*\].\[name,resourceGroup\] --out table

## 列出所有 VM 清單 ( 使用 [JMESPath](http://jmespath.org/) 查詢語法 ) (自訂欄位名稱)

> az vm list --query "\[\].{RGName:resourceGroup, VMName:name}" --out table

## 列出所有 VM 清單 ( 使用 [JMESPath](http://jmespath.org/) 查詢語法 ) (自訂欄位名稱並選取第二層屬性顯示)

> az vm list --query "\[\].{VMName:name,OSType:storageProfile.osDisk.osType}" --out table

## 列出所有 VM 清單 ( 使用 [JMESPath](http://jmespath.org/) 查詢語法 ) (使用 contains 篩選資料)

> az vm list --query "\[?contains(resourceGroup,'RGD')\].{ resource: resourceGroup, name: name }" --out table
> 
> az vm list --query "\[?contains(hardwareProfile.vmSize, 'Standard\_DS1')\]" --out table

**相關連結**

-   [Azure CLI 2.0 | Microsoft Docs](https://learn.microsoft.com/en-us/cli/azure/overview?view=azure-cli-latest)
-   [Exploring the Azure CLI 2.0 with Windows Subsystem for Linux](https://cmatskas.com/exploring-the-azure-cli-2-0-with-windows-subsystem-for-linux/)
-   [Create an Azure service principal with Azure CLI 2.0](https://learn.microsoft.com/en-us/cli/azure/create-an-azure-service-principal-azure-cli?view=azure-cli-latest)
-   [Use portal to create an Azure Active Directory application and service principal that can access resources](https://learn.microsoft.com/en-us/azure/azure-resource-manager/resource-group-create-service-principal-portal)
