如何使用Azure CLI列出已安装的Web App扩展以便批量移除?
如何用Azure CLI获取并批量移除Azure App Service的Site Extension
获取已安装的Web App扩展列表
由于Azure CLI的az webapp命令空间目前没有直接管理Site Extension的命令,你可以通过调用Azure REST API结合az rest命令来查询每个Web App的已安装扩展:
- 单个Web App查询示例:
# 替换为你的订阅ID、资源组名和Web App名称 az rest --method get \ --uri "/subscriptions/<订阅ID>/resourceGroups/<资源组名>/providers/Microsoft.Web/sites/<WebApp名称>/siteextensions?api-version=2022-09-01"
该命令会返回该Web App下所有已安装扩展的详细信息,包括名称、资源ID等。
- 批量查询所有Web App的扩展:
如果需要批量处理50个Web App,可以编写bash脚本(需提前安装jq工具处理JSON输出):
# 替换为你的订阅ID SUBSCRIPTION_ID="你的订阅ID" # 获取目标范围内的所有Web App(可添加--resource-group参数过滤特定资源组) WEB_APPS=$(az webapp list --subscription $SUBSCRIPTION_ID --query "[].{name:name, resourceGroup:resourceGroup}" -o json) # 遍历每个Web App查询扩展 echo $WEB_APPS | jq -c '.[]' | while read -r app; do APP_NAME=$(echo $app | jq -r '.name') RESOURCE_GROUP=$(echo $app | jq -r '.resourceGroup') echo "=== 查询Web App $APP_NAME 的已安装扩展 ===" az rest --method get \ --uri "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.Web/sites/$APP_NAME/siteextensions?api-version=2022-09-01" \ --query "[].{名称:name, 资源ID:id}" -o table done
批量移除Site Extension
基于上面的查询结果,你可以在脚本中添加删除逻辑,直接批量移除扩展:
# 替换为你的订阅ID SUBSCRIPTION_ID="你的订阅ID" WEB_APPS=$(az webapp list --subscription $SUBSCRIPTION_ID --query "[].{name:name, resourceGroup:resourceGroup}" -o json) echo $WEB_APPS | jq -c '.[]' | while read -r app; do APP_NAME=$(echo $app | jq -r '.name') RESOURCE_GROUP=$(echo $app | jq -r '.resourceGroup') echo "=== 处理Web App $APP_NAME ===" # 获取已安装扩展的资源ID EXTENSION_IDS=$(az rest --method get \ --uri "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.Web/sites/$APP_NAME/siteextensions?api-version=2022-09-01" \ --query "[].id" -o json) # 遍历删除每个扩展 echo $EXTENSION_IDS | jq -c '.[]' | while read -r ext_id; do echo "正在删除扩展: $ext_id" az resource delete --id $ext_id done done
关于az resource list无结果的说明
az resource list --resource-type Microsoft.Web/sites/siteextensions无法返回结果,是因为Site Extension属于Web App的子资源,全局资源列表查询不会默认返回这类嵌套子资源。必须针对每个父Web App单独查询,才能获取到对应的扩展信息。
内容的提问来源于stack exchange,提问作者StormRider01
相关产品推荐
相关产品推荐

