Azure自动化:并行作业处理(启动作业)

时间:2014-11-11 15:29:46

标签: powershell azure

我正在尝试将Azure PowerShell脚本转换为Azure自动化Runbook,但在使用“start-job”命令时遇到了问题。调用内联脚本后,作业在启动后不久就会失败。在我看来,参数没有正确通过。

在Azure自动化中是否有正确传递参数的东西?

失败的命令:

$CreatevNetGateway = { param($vNetName) New-AzureVNetGateway -VNetName $vNetName -GatewayType DynamicRouting } <#Start the jobs#> Start-Job $CreatevNetGateway -ArgumentList $vNetName1 Start-Job $CreatevNetGateway -ArgumentList $vNetName2 Wait-Job *

2 个答案:

答案 0 :(得分:0)

试试这个:

$CreatevNetGateway = {
    New-AzureVNetGateway -VNetName $args[0] -GatewayType DynamicRouting
}
<#Start the jobs#>
Start-Job $CreatevNetGateway -ArgumentList @($vNetName1)
Start-Job $CreatevNetGateway -ArgumentList @($vNetName2)
Get-Job | Wait-Job
Get-Job | Receive-Job

答案 1 :(得分:0)

在PowerShell工作流中,将值传递给InlineScript块时,需要将$ using添加到值的前面。例如:

workflow foo {
    $message = "hi"

    InlineScript {
        Write-Output -InputObject $using:message
    }
}

此外,不支持在Azure Automation沙箱中启动其他作业。看起来你试图并行运行两个任务,然后只有在完成两个任务之后再做一些事情。 PowerShell工作流(运行语言/引擎Azure自动化Runbook)具有可用于此的并行关键字:

workflow bar {
    parallel {
        New-AzureVNetGateway -VNetName $vNetName1 -GatewayType DynamicRouting
        New-AzureVNetGateway -VNetName $vNetName2 -GatewayType DynamicRouting
    }
    # do something that happens after both of those complete
}