如何通过脚本导出Azure工作簿?求API/SDK/CLI导出ARM方案
Azure工作簿自动化导出方案(替代手动门户导出)
解决serializedData为空的问题
默认通过Get-AzResource或基础REST API查询工作簿时,不会返回完整的序列化内容(serializedData为空),这是因为接口默认不包含工作簿的核心配置数据。需要在请求中添加$expand=content参数来获取完整数据:
REST API PowerShell 实现
$subscriptionId = "你的订阅ID" $resourceGroupName = "你的资源组名" $workbookName = "你的工作簿名称" $apiVersion = "2021-08-01" # 获取Azure管理API访问令牌 $token = (Get-AzAccessToken -ResourceUrl "https://management.azure.com").Token $headers = @{ "Authorization" = "Bearer $token" "Content-Type" = "application/json" } # 构造带内容扩展的请求URL $url = "https://management.azure.com/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName/providers/Microsoft.Insights/workbooks/$workbookName?api-version=$apiVersion&`$expand=content" # 获取完整工作簿数据 $workbookFullData = Invoke-RestMethod -Method Get -Uri $url -Headers $headers $serializedData = $workbookFullData.properties.serializedData
Az模块简化实现
如果习惯使用Az模块,可通过Invoke-AzRestMethod间接调用带扩展参数的接口:
$resourceGroupName = "你的资源组名" $workbookName = "你的工作簿名称" # 获取工作簿基础资源信息 $workbookResource = Get-AzResource -ResourceGroupName $resourceGroupName -ResourceType "microsoft.insights/workbooks" -Name $workbookName # 构造带内容扩展的请求URL $expandUrl = "$($workbookResource.ResourceId)?api-version=2021-08-01&`$expand=content" # 获取完整数据 $response = Invoke-AzRestMethod -Uri $expandUrl -Method Get $workbookFullData = $response.Content | ConvertFrom-Json $serializedData = $workbookFullData.properties.serializedData
自动化导出为ARM模板
获取到完整的serializedData后,可将其封装为标准ARM模板,实现类似仪表板的脚本化导出:
# 构造ARM模板结构 $armTemplate = [PSCustomObject]@{ "$schema" = "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#" contentVersion = "1.0.0.0" resources = @( [PSCustomObject]@{ type = "Microsoft.Insights/workbooks" apiVersion = "2021-08-01" name = $workbookName location = $workbookFullData.location properties = [PSCustomObject]@{ displayName = $workbookFullData.properties.displayName serializedData = $serializedData category = $workbookFullData.properties.category tags = $workbookFullData.tags } } ) } # 导出到本地JSON文件 $armTemplate | ConvertTo-Json -Depth 10 | Out-File "workbook-arm-template.json"
关键注意事项
- 确保执行账号拥有
Microsoft.Insights/workbooks/read权限 - API版本推荐使用
2021-08-01及以上,避免兼容性问题 - 若工作簿包含敏感配置,
serializedData可能包含加密字段,部署时需保证目标环境权限与原环境一致
内容的提问来源于stack exchange,提问作者Philip Woodring
相关产品推荐
相关产品推荐

