iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 8
1
Microsoft Azure

深入 Azure 雲端服務系列 第 8

Azure CLI + PowerShell + JMESPath 動態查詢 - 進一步強化靈活性

Azure CLI + PowerShell + JMESPath 動態查詢 - 進一步強化靈活性

首先先來一個範例 : 『想批量刪除之前測試建立的幾百個資源群組,並保留主群組避免。』

這時候可以使用 Azure CLI + JMESPath 達到目的,JMESPath 是一個強大的 JSON 動態查詢語言,特別適合以 JSON 資料結構為主的 Azure CLI

一. 先使用創建1個主 group + 200 個測試 group

$newGroup = az group create --name 'demo2' --location "eastasia" --tags item_id=0  | ConvertFrom-Json | select-Object  name;
Write-Host("創建主資源群組 $newGroup");

foreach($i in 1..200){
	$guid = [System.guid]::NewGuid().toString("N");
	$newGroup = az group create --name $guid --location "eastasia" --tags item_id=$i | ConvertFrom-Json | select-Object  name ;
	Write-Host("$i.創建測試群組 group $newGroup");
}

image-20200925200035489

二. az query 得到 JSON 資料,並利用[]抓取陣列資料,串接| length(@)驗證建立群組數量 :

az group list --query "[] | length(@)"

image-20200925200550009

三. [].name抓出所有群組名稱,並用jq .[] -r串接轉成字串陣列 :

az group list --query "[].name" | jq .[] -r

image

四. 使用 ]?name != '名稱'] 篩掉主資源群組 :

az group list --query "[?name != 'demo'].name | length(@)"
az group list --query "[?name != 'demo'].name" --output json | jq .[] -r

image-20200925202100215

五. 交給 powershell foreach 執行 azure cli 的刪除指令

$gs= (	az group list --query "[?name != 'demo'].name" --output json | jq .[] -r	)
foreach( $g in $gs){
    az group delete -n $g --no-wait -y; 
}

回到 Azure Portal 驗證可以看到除了主群組,其他測試全被刪除

假如同樣情況用 Azure Portal GUI 會特別沒有效率,一個一個點大概要點幾個小時

image


其他用法

抓取第一筆資源群組資料 :

az group list --query "[0]"

image

抓取N1-N2的資料 :

az group list --query "[1:5].name"

image


上一篇
Azure CLI + JMESPath 動態查詢
下一篇
Azure CLI 動態查詢、計算成本花費
系列文
深入 Azure 雲端服務30

尚未有邦友留言

立即登入留言