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

如何用PowerShell生成Azure租户所有API的CSV报告及报错解决

问题解决:Azure ApiManagement PowerShell参数绑定错误与CSV报告生成

错误原因

你使用Get-AzContext获取的是Azure订阅/租户级全局上下文(类型为PSAzureContext),但Get-AzApiManagementBackend、Get-AzApiManagementProduct等ApiManagement专用命令需要的是单个ApiManagement服务实例的专属上下文(类型为PsApiManagementContext),两者类型不兼容,导致参数绑定失败。

修正后的脚本(含CSV报告生成)

以下脚本会遍历租户下所有ApiManagement实例,获取后端、产品、策略信息,并分别导出为CSV文件:

# 获取租户下所有ApiManagement实例
$apimInstances = Get-AzApiManagement

# 初始化数组存储各类数据
$backendData = @()
$productData = @()
$policyData = @()

# 遍历每个ApiManagement实例
foreach ($apim in $apimInstances) {
    # 创建当前ApiManagement实例的专属上下文
    $apimContext = New-AzApiManagementContext -ResourceGroupName $apim.ResourceGroupName -ServiceName $apim.Name

    # 获取后端信息并添加实例标识
    $backends = Get-AzApiManagementBackend -Context $apimContext
    foreach ($backend in $backends) {
        $backendData += [PSCustomObject]@{
            ApiManagementName = $apim.Name
            ResourceGroupName = $apim.ResourceGroupName
            BackendId         = $backend.BackendId
            Url               = $backend.Url
            Protocol          = $backend.Protocol
            Description       = $backend.Description
            CreatedDate       = $backend.CreatedDate
            UpdatedDate       = $backend.UpdatedDate
        }
    }

    # 获取产品信息并添加实例标识
    $products = Get-AzApiManagementProduct -Context $apimContext
    foreach ($product in $products) {
        $productData += [PSCustomObject]@{
            ApiManagementName = $apim.Name
            ResourceGroupName = $apim.ResourceGroupName
            ProductId         = $product.ProductId
            Title             = $product.Title
            Description       = $product.Description
            State             = $product.State
            SubscriptionRequired = $product.SubscriptionRequired
            CreatedDate       = $product.CreatedDate
            UpdatedDate       = $product.UpdatedDate
        }
    }

    # 获取策略信息并添加实例标识
    $policies = Get-AzApiManagementPolicy -Context $apimContext -Format raw
    $policyData += [PSCustomObject]@{
        ApiManagementName = $apim.Name
        ResourceGroupName = $apim.ResourceGroupName
        PolicyContent     = $policies
    }
}

# 导出为CSV文件
$backendData | Export-Csv -Path "ApiManagement_Backends_$(Get-Date -Format 'yyyyMMdd').csv" -NoTypeInformation -Encoding UTF8
$productData | Export-Csv -Path "ApiManagement_Products_$(Get-Date -Format 'yyyyMMdd').csv" -NoTypeInformation -Encoding UTF8
$policyData | Export-Csv -Path "ApiManagement_Policies_$(Get-Date -Format 'yyyyMMdd').csv" -NoTypeInformation -Encoding UTF8

Write-Host "报告生成完成,已导出3个CSV文件"

关键说明

  • New-AzApiManagementContext:专门用于创建ApiManagement服务实例的上下文,需要传入该实例的资源组名称和服务名称,这两个参数可从Get-AzApiManagement的返回结果中获取。
  • 添加实例标识:在导出的数据中加入ApiManagementName和ResourceGroupName,方便区分不同实例的信息。
  • 策略导出:使用-Format raw参数获取原始策略XML内容,避免默认的格式化输出。
  • CSV编码:指定-Encoding UTF8确保中文内容显示正常。

内容的提问来源于stack exchange,提问作者Senior Systems Engineer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 11:15:33