Title says it all, I guess.
I am trying to modularize my runbooks and all I want to do is start child RBs using the internal Automation module 'Start-AutomationRunbook' AND get back the result.
This is the sample code I am testing with:
Parent RB:
$result = Start-AutomationRunbook -Name ChildRB
Write-Output $result
Child RB:
$hello = 'Hello world!'
Write-Output $hello
However, instead of storing 'Hello world!' in $result the Job ID is sent to the console.
I posted the same question here: https://learn.microsoft.com/en-us/answers/questions/1417541/how-can-i-retrieve-output-from-azure-powershell-ch
And I received the following answer, which actually works:
In order to get the Job output from the child runbook, use Get-AzAutomationJobOutput cmdlet from the Az.Automation module. Following is a sample script to start a child runbook, wait for it to complete and then get the output back.
#Using Managed Identity for Authentication - START # Ensures you do not inherit an AzContext in your runbook Disable-AzContextAutosave -Scope Process # Connect to Azure with system-assigned managed identity $AzureContext = (Connect-AzAccount -Identity).context # Set and store context $AzureContext = Set-AzContext -SubscriptionName $AzureContext.Subscription -DefaultProfile $AzureContext #Using Managed Identity for Authentication -END $result = Start-AutomationRunbook -Name ChildRB #wait for the job to complete else you may get empty result which creates confusion Wait-AutomationJob -Id $result #get the output from child runbook. $out = Get-AzAutomationJobOutput $result -ResourceGroupName "new-autoAcc" -AutomationAccountName "autoacc" -Stream "Any" write-output $out.Summary
Note that "get-AzAutomationJobOutput" is not an internal automation cmdlet (hence the name contains "Az"). The only internal cmdlets as available are here - https://learn.microsoft.com/en-us/azure/automation/shared-resources/modules#internal-cmdlets
Kudos to AnuragSingh-MSFT !!!