Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell Azure自动化作业共享订阅上下文_Powershell_Azure_Azure Automation - Fatal编程技术网

Powershell Azure自动化作业共享订阅上下文

Powershell Azure自动化作业共享订阅上下文,powershell,azure,azure-automation,Powershell,Azure,Azure Automation,我有一个Azure Automation runbook,它为每个订阅启动一个子runbook foreach ($sub in $subscriptions) { $ChildRunbookInputParams = @{"SubscriptionId"="$($sub.SubscriptionId)"} $job = Start-AzureRmAutomationRunbook ` -Name $ChildRunbookName `

我有一个Azure Automation runbook,它为每个订阅启动一个子runbook

foreach ($sub in $subscriptions)
{
    $ChildRunbookInputParams = @{"SubscriptionId"="$($sub.SubscriptionId)"}

    $job = Start-AzureRmAutomationRunbook `
            -Name $ChildRunbookName `
            -Parameters $ChildRunbookInputParams `
            -ResourceGroupName $AutomationAccountResourceGroup `
            -AutomationAccountName $AutomationAccountName 
}
父运行手册和子运行手册都使用相同的运行方式帐户

我遇到的问题是,运行手册似乎在共享上下文,即使它们作为独立作业运行。
父runbook对包含自动化帐户的订阅执行
设置AzureRmContext
,以便可以
启动AzureRmAutomationRunbook
。子runbook对传递的订阅ID执行
设置AzureRmContext
,以便处理该订阅中的资源。
在第一个子runbook启动后,父runbook中后续的
Start azurerAutomationRunbook
调用将失败,因为它无法再找到指定的runbook。随着其他子runbook的启动(父runbook在第一个更改订阅之前启动了几个子作业),先前启动的子作业开始处理最后一个订阅的资源

foreach ($sub in $subscriptions)
{
    $ChildRunbookInputParams = @{"SubscriptionId"="$($sub.SubscriptionId)"}

    $job = Start-AzureRmAutomationRunbook `
            -Name $ChildRunbookName `
            -Parameters $ChildRunbookInputParams `
            -ResourceGroupName $AutomationAccountResourceGroup `
            -AutomationAccountName $AutomationAccountName 
}

这是预期的行为吗?处理多个订阅似乎是一个常见的要求;这方面的推荐模式是什么?

我们也遇到了这个问题,必须与Microsoft一起打开一个支持案例来解决。自2017年9月以来,Azure PowerShell模块/cmdlet开始支持在配置文件(AzureRM上下文)中作为参数传递能力,这可能才成为可能;这确保了并行运行的AzureRM命令(通过工作流或使用Start-AzureRMAutoRunbookJob启动新的子自动化作业)在指定的上下文中执行

出现此问题的原因是,使用Azure managed automation workers时,在高作业量下,Azure会重用workers以节省资源,并且可能会丢失上下文


GitHub()上提供了这方面的示例。

相关反馈项目:相关GitHub问题:忘记提及您需要确保您的AzureRM模块是最新的。MS支持建议最低5.7.0。我们还建议使用“部署到Azure自动化”按钮手动部署更新,因为它尊重>=版本依赖关系,并导致我们出现问题:AzureRm.Storage 4.2.3需要AzureRm.Profile>=4.6,Azure.Storage>=4.3.2。Button提取了这两个依赖项中最新的一个,并为我们带来了问题。谢谢,我听说新的上下文参数应该可以解决这个问题,但从未尝试过。