[英]How to pass a parameter from Azure Automation Runbook to Azure Datafactory pipeline
[英]Microsoft Azure (Automation): Runbook passing Hash as Parameter
我試圖將{"server":"database","server2":"database_b"}
類的哈希作為參數傳遞給Microsoft Azure上的Runbook。 但是都沒有
[parameter(Mandatory=$true)] [hashtable]$ServersWithCorrespondingDatabase,
也不
[parameter(Mandatory=$true)] [object]$ServersWithCorrespondingDatabase,
似乎有效?
在此示例Runbook Gallery中,它們與參數ChildRunbookInputParams
用作哈希表,例如:
Start-ChildRunbook `
-ChildRunbookName "Update-VM" `
-ChildRunbookInputParams @{'VMName'='VM204';'Retries'=3} `
-AzureConnectionName "Visual Studio Ultimate with MSDN"
-AutomationAccountName "Contoso IT Automation Production" `
-WaitForJobCompletion $true `
-ReturnJobOutput $true `
-JobPollingIntervalInSeconds 20 `
-JobPollingTimeoutInSeconds 120
但是不知何故我無法將字符串@{"Server"="DB";"Server2"="DB3"}
作為參數傳遞給我的azure Runbook。
您在庫中引用的腳本使用哈希表來指定子運行手冊的所有參數,而不是哈希表類型的單個參數。 因此,子Runbook可能具有如下的param塊:
workflow start-update-vm
{
param ($VMName, $retries)
#rest of code
}
但是,您可以采用字符串形式的json輸入,並將其轉換為哈希表/數組,如下所述: http : //blogs.technet.com/b/orchestrator/archive/2014/01/10/sma-capabilities-深入運行本輸入輸出和嵌套運行本.aspx 。
在運行手冊中,應將參數定義為[對象]類型,而不是[哈希表]。 您是通過Azure自動化門戶啟動運行手冊,還是通過另一個運行手冊內聯?
假設這是您的Runbook:
workflow a {
param(
[object] $obj
)
$obj
}
如果通過門戶網站,則需要將對象參數指定為JSON,例如:
{"server":"database","server2":"database_b"}
如果通過內聯調用該運行手冊的運行手冊,則將其指定為PowerShell對象或哈希表:
a -Obj @{"server"="database";"server2"="database_b"}
編輯:如果您嘗試通過在運行本中調用Start-ChildRunbook運行本來專門啟動該運行本,則它看起來像這樣,因為Start-ChildRunbook運行本將運行本的參數作為哈希表啟動,在這種情況下這些參數之一的值是哈希表/對象本身:
$ValueForObjParam = @{"server"="database";"server2"="database_b"}
Start-ChildRunbook `
-ChildRunbookName "a" `
-ChildRunbookInputParams @{"obj"=$ValueForObjParam} `
-AzureConnectionName "Visual Studio Ultimate with MSDN" `
-AutomationAccountName "Contoso IT Automation Production" `
-WaitForJobCompletion $true `
-ReturnJobOutput $true `
-JobPollingIntervalInSeconds 20 `
-JobPollingTimeoutInSeconds 120
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.