sar*_*nan 0 azure powershell-workflow azure-automation
我需要从另一个 runbook 调用一个 runbook,并在 azure 自动化中获取一个自定义对象作为输出。如果被调用的 Runbook 返回 int 或 string 但无法完成返回自定义对象,则它工作正常。 被调用的 Runbook 的一个简单示例是
workflow CalledRunbook
{
[OutputType([Object])]
$obj1=@{"key1"="value1"}
$obj1
}
Run Code Online (Sandbox Code Playgroud)
现在这个 Runbook 是从 CallingRunbook 调用的,我需要打印这个 obj1
workflow CallingRunbook
{
#After doing proper authentication
$job = Start-AzureAutomationRunbook -Name "CalledRunbook" -AutomationAccountName $AutomationAccountName
$doLoop = $true
while($doLoop) {
Start-Sleep -s 5
$job = Get-AzureAutomationJob -Id $job.Id -AutomationAccountName $AutomationAccountName
$doLoop = (($job.Status -notmatch "Completed") -and ($job.Status -notmatch "Failed") -and ($job.Status -notmatch "Suspended") -and ($job.Status -notmatch "Stopped"))
}
$jobout = Get-AzureAutomationJobOutput `
-Id $job.Id `
-AutomationAccountName $AutomationAccountName `
-Stream Output
if ($jobout) {
Write-Output $jobout
}
}
Run Code Online (Sandbox Code Playgroud)
输出为空。如果我返回一个字符串,它工作得很好。如何使其与自定义对象一起使用?
Azure 自动化中 Runbook 作业的每个输出记录始终存储为字符串,而不管类型如何。如果输出的对象不是字符串,则将其序列化为字符串。此对象似乎未正确序列化为字符串,因此 Azure 自动化不会将其字符串版本存储为作业输出。
要解决此问题,我的建议是自己在两个 Runbook 之间序列化/反序列化对象。在 CalledRunbook 中的对象上使用 ConvertTo-Json,并输出结果。这会将对象输出为 JSON 字符串。然后,在 CallingRunbook 中,对 CalledRunbook 的输出调用 ConvertFrom-Json,以取回原始对象。
| 归档时间: |
|
| 查看次数: |
765 次 |
| 最近记录: |