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

Azure Runbook执行者识别及执行记录匹配方法咨询

如何识别Azure Runbook的执行者并匹配执行记录

我之前也碰到过类似的问题,微软确实调整了Azure自动化UI里的字段显示,但其实还是有几种靠谱的方法能找到执行者并关联Job记录,给你整理一下:

一、先解决Job ID不匹配的问题

首先得搞清楚为什么日志里的Job ID和自动化账户里的不一样——其实是Azure Monitor日志里的Job ID是完整的资源路径格式,而自动化账户UI里显示的是最后那串短ID。比如自动化账户里看到的是abc123,日志里的是/subscriptions/xxx/resourceGroups/xxx/providers/Microsoft.Automation/automationAccounts/xxx/jobs/abc123。

要匹配两者,你可以在Log Analytics里用Kusto查询提取短ID来关联:

AzureDiagnostics
| where ResourceProvider == "MICROSOFT.AUTOMATION"
| where OperationName in ("JobStarted", "JobCompleted", "JobFailed")
| extend ShortJobId = substring(JobId, lastindexof(JobId, '/') + 1)
| where ShortJobId == "<你在自动化账户里看到的短Job ID>"
| project ShortJobId, RunbookName_s, Caller, TimeGenerated, OperationName

这样就能把日志记录和自动化账户里的Job对应起来了。

二、获取Runbook的执行者信息

方法1:用Azure PowerShell直接查询

虽然UI里的Executed by字段没了,但Get-AzAutomationJob命令返回的对象里依然保留了执行者信息,就是CreatedBy属性。你可以直接运行以下脚本:

# 替换成你的自动化账户和资源组信息
$automationAccountName = "你的自动化账户名"
$resourceGroupName = "你的资源组名"
$jobId = "<自动化账户里的短Job ID>"

$job = Get-AzAutomationJob -AutomationAccountName $automationAccountName -ResourceGroupName $resourceGroupName -Id $jobId
Write-Host "该Job的执行者是:" $job.CreatedBy

这个属性会返回执行者的用户邮箱(如果是手动触发),或者服务主体的名称/ID(如果是自动触发,比如逻辑应用、Azure函数)。

方法2:通过Azure Monitor日志直接提取

刚才的Kusto查询里,Caller字段就是执行者的信息,你可以直接查询某个Runbook的所有执行记录及执行者:

AzureDiagnostics
| where ResourceProvider == "MICROSOFT.AUTOMATION"
| where RunbookName_s == "<你的Runbook名称>"
| where OperationName in ("JobStarted", "JobCompleted")
| extend ShortJobId = substring(JobId, lastindexof(JobId, '/') + 1)
| project ShortJobId, RunbookName_s, Caller, TimeGenerated, Status_s

这样就能一次性看到该Runbook所有执行记录的执行者、时间和状态了。

三、批量查询的小技巧

如果你需要批量查看某个Runbook的所有执行者,可以用PowerShell脚本循环处理:

$automationAccountName = "你的自动化账户名"
$resourceGroupName = "你的资源组名"
$targetRunbookName = "目标Runbook名称"

# 获取该Runbook的所有Job记录
$allJobs = Get-AzAutomationJob -AutomationAccountName $automationAccountName -ResourceGroupName $resourceGroupName | Where-Object {$_.RunbookName -eq $targetRunbookName}

# 输出每个Job的详细信息
foreach ($job in $allJobs) {
    Write-Host "Job ID: $($job.JobId) | 执行者: $($job.CreatedBy) | 执行时间: $($job.CreationTime) | 状态: $($job.Status)"
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:35:52