You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过脚本导出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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 11:28:22