如何在Azure PowerShell 7.2父Runbook中获取子Runbook输出?
解决Start-AutomationRunbook无法获取子Runbook返回结果的问题
问题原因
Start-AutomationRunbook默认以异步模式启动子Runbook,调用后会立即返回作业ID,而非等待子Runbook执行完毕并返回输出内容,这就是你拿到作业ID而非预期字符串的原因。
解决方案
要获取子Runbook的返回结果,需要在启动作业后等待其完成,再提取作业输出。
修改后的父Runbook代码
# 启动子Runbook,获取作业对象 $job = Start-AutomationRunbook -Name ChildRB # 等待子作业执行完成 Wait-AutomationJob -Id $job.Id # 提取作业的输出流内容 $result = Get-AutomationJobOutput -Id $job.Id -Stream Output # 输出最终结果 Write-Output $result
子Runbook代码(无需修改)
$hello = 'Hello world!' Write-Output $hello
补充说明
Wait-AutomationJob会阻塞父Runbook的执行,直到子作业完成,适合需要同步获取结果的场景。- 子Runbook必须通过
Write-Output(或标准输出)返回内容,Get-AutomationJobOutput才能捕获到对应输出流的数据。
内容的提问来源于stack exchange,提问作者Wrstkpp
相关产品推荐
相关产品推荐

