我想知道,我是否有辦法在Azure Automation中的獨立運行簿中定義通用函式? 例如,我有一個記錄功能,可以對資訊進行時間標記,并在出錯時退出,我在多個運行簿中使用。 我想只定義一次,然后再從其他運行簿中呼叫它。 如果我將來改變它,我只需要在一個地方改變它。
我知道我可以定義父/子運行簿并在線呼叫它們,這讓我想知道我是否可以分割出,例如,一個函式定義,然后從另一個運行簿中呼叫該運行簿,將該函式 "匯入 "到當前運行簿中。 因此,例如,我有一個名為 "Test-FunctionDefinition "的運行簿,其代碼如下:
function Test-FunctionDefintion() /span>{
param (
[String] $TestParam[/span
)
Write-Output "測驗函式的輸出。$TestParam"。
}
我希望能夠像這樣從另一個runbook行內呼叫它來定義函式,然后能夠使用該函式:
& .Test-FunctionDefinition.ps1
Test-FunctionDefinition -TestParam "測驗字串"。
我試著創建了這兩個運行簿,但盡管它在第1行似乎很好地呼叫了運行簿 "Test-FunctionDefiniton",但隨后在第3行呼叫該函式時卻失敗了:
Test-FunctionDefinition:術語 "Test-FunctionDefinition "未被識別為 cmdlet、函式、腳本檔案或可操作程式的名稱。
我想做的事情是否可行? 我意識到我可以直接修改我的運行手冊并呼叫 & .Test-FunctionDefinition.ps1 -TestParam "Test String",但如果可能的話,我更希望用其他方式來做。
uj5u.com熱心網友回復:
看起來它應該是可行的 - 在自動化中創建模塊化運行簿
你有兩種選擇:
- 行內 - 子運行簿與父運行簿在同一作業中運行。
- Cmdlet - 為子運行簿創建一個單獨的作業。
對于Powershell runbook來說,應該很簡單
。
$vm = Get-AzVM -ResourceGroupName "LabRG"/span> -Name "MyVM"/span>
$output = .PS-ChildRunbook.ps1 -VM $vm -RepeatCount 2 -Restart $true >。
uj5u.com熱心網友回復:
我又做了一些測驗,以確保我最初的假設(在一個腳本中定義一個函式,并在另一個腳本中呼叫它)如我所料,我得到了同樣的錯誤。看來,你需要點源,而不是使用&。這在PowerShell控制臺和Azure Automation中都是有效的:
. .Test-FunctionDefinition.ps1
Test-FunctionDefinition -TestParam "Test String"。
注意開頭的'.'而不是'&'。我需要查一下這兩者之間有什么區別......
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/332621.html
標籤:
上一篇:開關小部件總是回傳到關閉位置
