Автоматизация Azure: передача параметров дочернему модулю Runbook в Python

Как мы можем передать параметры дочернему модулю Runbook, написанному на Python, с помощью Start-AzureRmAutomationRunbook.

Start-AzureRmAutomationRunbook принимает -Parameter параметр для именованных параметров (отлично работает с дочерними модулями Runbook, написанными на PowerShell). Но поскольку python поддерживает позиционные параметры (args), я не могу использовать параметр -Parameter.

Кстати, мой runbook python работает на гибридном работнике, поэтому я не уверен, как мы можем использовать встроенное выполнение, потому что мне нужно передать параметр RunOn (гибридная рабочая группа Runbook).


person Ajay Kumar    schedule 03.01.2018    source источник
comment
Вы пробовали проверить sys.argv, чтобы увидеть, сбрасывает ли он там значения?   -  person Ryan McVicar    schedule 04.01.2018
comment
Я не могу использовать параметры на основе позиции в командлете Start-AzureRmAutomationRunbook, поэтому я не смогу проверить sys.argv. Кстати, Start-AzureRmAutomationRunbook отлично подходит для модулей Runbook на Python без параметров.   -  person Ajay Kumar    schedule 11.01.2018


Ответы (1)


К сожалению, параметр -Parameters не работает для модулей Runbook Python. Это ошибка, и я ее зарегистрировал (https://github.com/Azure/azure-powershell/issues/5313).

Вы МОЖЕТЕ использовать параметр -Parameters в Start-AutomationRunbook из другого модуля Runbook.

Итак, в качестве обходного пути вы можете создать модуль Runbook PowerShell, который выглядит следующим образом:

Param(
    [parameter(Mandatory=$true)] [string]$runbook,
    [string]$args)

Start-AutomationRunbook -Name $runbook -Parameters @{ "args" = $args }

Затем вы можете вызвать этот модуль Runbook из командлета Start-AzureRmAutomationRunbook (при условии, что модуль Runbook Python с именем «HelloWorldPy»):

Start-AzureRmAutomationRunbook -ResourceGroupName resourceGroupName -AutomationAccountName automationAccountName -Name Start-PythonRunbook -Parameters  @{ "runbook" = "HelloWorldPy"; "args" = "arg1 arg2 arg3" }
person Brandon Poe - MSFT    schedule 19.01.2018
comment
Я только что перечитал ваш вопрос, и кажется, что вы на самом деле уже пытаетесь запустить свой модуль Runbook Python как дочерний модуль Runbook. Если родительский модуль Runbook является модулем Runbook PowerShell, вы можете просто использовать там командлет Start-Automation вместо Start-AzureRmAutomationRunbook. И он также поддерживает параметр -RunOn. - person Brandon Poe - MSFT; 19.01.2018