我正在尝试将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 *
答案 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
}