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

在Azure自动化Runbook中运行Submit-AdlJob时出现方法未找到错误

解决Azure自动化Runbook调度U-SQL脚本的认证与执行问题

我之前也踩过Azure自动化调度ADLA U-SQL脚本的坑,看你贴的代码片段,大概率是RunAs连接的参数调用不全或者权限配置不到位,咱们来一步步排查修复:

1. 先补全Runbook的认证代码

你贴的代码明显截断了,完整的服务主体认证代码(推荐用新版Az模块,旧AzureRm模块已停止维护)应该是这样的:

# 获取Azure RunAs连接信息
$Conn = Get-AutomationConnection -Name AzureRunAsConnection

# 通过服务主体登录Azure
Connect-AzAccount -ServicePrincipal `
    -Tenant $Conn.TenantID `
    -ApplicationId $Conn.ApplicationId `
    -CertificateThumbprint $Conn.CertificateThumbprint

如果一定要用旧版AzureRm模块,把Connect-AzAccount换成Connect-AzureRmAccount即可,但还是建议尽快迁移到Az模块。

2. 核心权限配置(最容易忽略的点)

光有认证代码还不够,你的RunAs服务主体必须拥有足够的权限才能操作ADLA和关联的存储:

  • 给服务主体赋予ADLA账户的Data Lake Analytics Contributor角色,允许它提交和管理U-SQL作业
  • 给服务主体赋予脚本依赖的Data Lake Storage Gen1/Gen2的对应权限:
    • 若是Gen2存储,添加Storage Blob Data Contributor角色
    • 若是Gen1存储,添加Data Lake Store Contributor角色
      (如果权限太宽泛,也可以配置更细粒度的权限,但以上角色能满足基本调度需求)

3. 完整的U-SQL调度Runbook示例

这里给你一个可用的完整脚本,包含认证和作业提交:

# 1. 认证部分
$Conn = Get-AutomationConnection -Name AzureRunAsConnection
Connect-AzAccount -ServicePrincipal `
    -Tenant $Conn.TenantID `
    -ApplicationId $Conn.ApplicationId `
    -CertificateThumbprint $Conn.CertificateThumbprint

# 2. 定义作业参数
$adlaAccountName = "你的ADLA账户名称"
$resourceGroupName = "ADLA所在的资源组名"
$uSqlScriptPath = "/uql-scripts/你的脚本文件.usql" # 这是ADLS存储里的脚本路径
$jobName = "Auto-Scheduled-Job-$(Get-Date -Format 'yyyyMMddHHmmss')" # 生成唯一作业名

# 3. 提交U-SQL作业
$jobResult = Submit-AzDataLakeAnalyticsJob `
    -Account $adlaAccountName `
    -ResourceGroupName $resourceGroupName `
    -Name $jobName `
    -ScriptPath $uSqlScriptPath `
    -DegreeOfParallelism 2 # 根据需求调整并行度

# 可选:等待作业完成并输出结果
Wait-AzDataLakeAnalyticsJob -Account $adlaAccountName -JobId $jobResult.JobId
Write-Output "作业执行状态: $($jobResult.State)"

4. 额外注意事项

  • 确保你的自动化账户里已经安装了Az.DataLakeAnalytics和Az.Accounts模块,不然会找不到对应的cmdlet(可以在自动化账户的“模块”页面搜索安装)
  • 如果你的U-SQL脚本需要传入参数,在Submit-AzDataLakeAnalyticsJob里加上-Parameter参数,比如:-Parameter @{ "InputFilePath" = "/input/data.csv"; "OutputFilePath" = "/output/result.csv" }
  • 若之前用ADF也失败,大概率也是权限问题,后续提问时可以重点排查ADF服务主体的权限配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:52:29