2014-11-11 3 views
0

Я пытаюсь преобразовать скрипт Azure PowerShell в Runbook Automation Runbook, но я столкнулся с проблемой при использовании команды «start-job». После вызова встроенных скриптов задания завершаются вскоре после запуска. Мне кажется, что параметры не проходят должным образом.Azure Automation: Parallel Job Handling (start-job)

Есть ли что-то, что мне не хватает, чтобы правильно передать параметры в Azure Automation?

Команды, которые не удается:

$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

В PowerShell Workflow, при передаче значения в блок InlineScript, вам нужно добавить $ используя для фронт значения. Пример:

workflow foo { 
    $message = "hi" 

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

Кроме того, запуск других заданий в песочнице Azure Automation не поддерживается. Похоже, вы пытаетесь запустить две задачи параллельно, а затем сделать что-то только после завершения. Рабочий процесс PowerShell (работающий на языке/движке Azure Automation работает) имеет параллельное ключевое слово, которое может быть использовано для этого:

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

Первый вариант выглядит так: у меня не будет возможности передавать значения в качестве атрибутов при вызове сценария, поэтому я не уверен, что это сработает. Вы вызываете $ using: из встроенного скрипта. Я могу попытаться вызывать три отдельных встроенных скрипта, и в конце добавить команду «wait». Я попробовал второй вариант, так как это * точно * то, что я ищу, но Azure Automation взрывается, говоря, что «parallel» - это «Неожиданное ключевое слово». –

+0

Я не уверен, что вы подразумеваете под пропуск в качестве атрибутов - вы имеете в виду параметры? Вы хотите, чтобы InlineScript был функцией и динамически вписывался в переменную $ message? – Joe

+0

Также я просто проверил параллель в Azure Automation, и он работает. Вы уверены, что не пытаетесь вызвать параллель внутри InlineScript? InlineScript запускает свое содержимое как PowerShell, а не PowerShell Workflow, поэтому ключевое слово parallel не будет работать внутри InlineScript, поскольку оно доступно только в PowerShell Workflow – Joe

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 
+0

К сожалению, это не сработало. Аргумент никогда не проходил. –

Смежные вопросы