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

PowerShell调用POST REST API导入Kusto数据时脚本无限运行问题排查

问题修正:PowerShell调用Kusto流式导入REST API

原脚本存在几个关键问题导致运行异常或报错,以下是具体修正方案:

问题分析

  • 变量名不匹配:定义了$Collection但调用API时传入了未定义的$TestCollection,导致请求体为空
  • 硬编码Content-Length:手动设置为8000会和实际JSON内容长度不匹配,Kusto服务无法正确解析请求
  • 冗余Header设置:Host头无需手动指定,PowerShell会自动生成;Accept-Encoding设置deflate可能引发解压兼容性问题
  • 缺少Content-Type头:未明确指定Content-Type: application/json,服务无法识别请求体格式

修正后的脚本

# 获取资源数据并转为JSON格式
$Collection = Get-AzResource | Select-Object ResourceName, ResourceGroupName, ResourceType, Location, ResourceId, Tags | ConvertTo-Json

# 获取Kusto集群的访问令牌
$accessToken = (Get-AzAccessToken -ResourceUrl "https://MyKustoClustername.westus2.kusto.windows.net").Token

# 构造必要的请求Header
$authHeader = @{
    'Authorization' = 'Bearer ' + $accessToken
    'Content-Type'  = 'application/json'
}

# 构造流式导入API的URI
$Uri = "https://MyKustoClustername.westus2.kusto.windows.net/v1/rest/ingest/MyDatabasename/VinnyRunBookTest?streamFormat=Json&mappingName=VinnyRunBookTestJsonMapping"

# 调用REST API并捕获异常
try {
    $response = Invoke-RestMethod -Uri $Uri -Method POST -Headers $authHeader -Body $Collection
    Write-Host "数据导入成功,响应结果:"
    $response
}
catch {
    Write-Host "导入失败,错误信息:"
    $_.Exception.Message
    if ($_.ErrorDetails) {
        $_.ErrorDetails.Message
    }
}

额外注意事项

  • 确保Kusto表的JSON映射VinnyRunBookTestJsonMapping已正确创建,字段需和$Collection中的属性一一对应
  • 检查当前Azure账号是否拥有Kusto数据库的Ingestor权限
  • 如果数据量较大,建议分批处理,避免单次请求内容过大

内容的提问来源于stack exchange,提问作者Vinny

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 13:37:19