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

Azure自动化Runbook中PowerShell执行ADX集群Kusto查询的问题

在Azure自动化PowerShell Runbook中执行ADX Kusto查询的解决方案

一、解决Kusto.Data.dll加载失败的问题

  • 不要上传系统DLL:Azure自动化沙箱环境自带System.Runtime.dll、System.Data.Common.dll等基础系统库,加载失败的核心原因是手动导入的Kusto.Data.dll依赖的.NET框架版本与Runbook使用的PowerShell环境不匹配,或者缺少Kusto相关的其他依赖DLL。
  • 正确导入Kusto依赖包:
    1. 从NuGet下载Kusto.Data和Kusto.Cloud.Platform两个包(注意选择与Runbook PowerShell版本匹配的版本:PowerShell 5.1选.NET Framework兼容版,PowerShell 7选.NET Core/.NET 5+版)。
    2. 解压两个包,将其中所有非系统类的DLL(比如Kusto.Data.dll、Kusto.Cloud.Platform.dll等)打包成一个ZIP文件。
    3. 登录Azure门户,进入目标自动化账户,在左侧菜单「共享资源」下选择「模块」,点击「添加模块」上传该ZIP文件。
    4. 模块导入完成后,在Runbook中通过Add-Type -Path "Kusto.Data.dll"加载,即可正常使用Kusto的.NET客户端。

二、无需额外模块的替代方案:调用ADX REST API

如果不想导入DLL模块,可以直接通过ADX的REST API执行查询,步骤如下:

  1. 给自动化账户的托管标识(或你使用的Service Principal)分配ADX目标数据库的Viewer权限。
  2. 在Runbook中使用PowerShell发送HTTP请求,示例代码:
# 配置ADX参数
$clusterName = "your-cluster-name"
$region = "your-cluster-region"
$databaseName = "target-db-name"
$kustoQuery = "StormEvents | where State == 'FLORIDA' | take 10"

# 获取托管标识的访问令牌(如果用Service Principal,替换为获取SP令牌的逻辑)
$tokenEndpoint = $env:IDENTITY_ENDPOINT + "?resource=https://kusto.azure.com&api-version=2019-08-01"
$token = (Invoke-RestMethod -Method Get -Headers @{"X-IDENTITY-HEADER" = $env:IDENTITY_HEADER} -Uri $tokenEndpoint).access_token

# 构造查询请求
$apiUri = "https://$clusterName.$region.kusto.windows.net/v1/rest/query"
$requestHeaders = @{
    "Authorization" = "Bearer $token"
    "Content-Type"  = "application/json"
}
$requestBody = @{
    db  = $databaseName
    csl = $kustoQuery
} | ConvertTo-Json

# 发送请求并解析结果
$queryResult = Invoke-RestMethod -Method Post -Uri $apiUri -Headers $requestHeaders -Body $requestBody
# 提取查询结果行
$outputRows = $queryResult.Tables[0].Rows
$outputRows

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 16:05:10