Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Az Azure Automationben ajánlott újrahasználható, moduláris runbookokat írni egy különálló funkcióval, amelyet más runbookok hívnak meg. A szülő runbookok gyakran meghívnak egy vagy több gyermek runbookot a szükséges funkciók elvégzéséhez.
A gyermek runbookok meghívásának két módja van: beágyazott vagy parancsmagon keresztül. Az alábbi táblázat összefoglalja azokat a különbségeket, amelyek segítenek eldönteni, hogy melyik út a jobb a forgatókönyvekhez.
| Beágyazott | Parancsmag | |
|---|---|---|
| Feladat | A gyermek runbookok ugyanabban a feladatban futnak, mint a szülő. | A gyermek runbookhoz külön feladat jön létre. |
| Kivégzés | A szülő runbook a folytatás előtt megvárja, amíg a gyermek runbook befejeződik. | A szülő runbook közvetlenül a gyermek runbook elindítása után folytatódik, vagy a szülő runbook megvárja a gyermekfeladat befejezését. |
| Hozam | A szülő runbook közvetlenül lekérheti a kimenetet a gyermek runbookból. | A szülő runbooknak le kell kérnie a kimenetet a gyermek runbook-feladatból, vagy a szülő runbook közvetlenül lekérheti a kimenetet a gyermek runbookból. |
| Paraméterek | A gyermek runbook paramétereinek értékei külön vannak megadva, és bármilyen adattípust használhatnak. | A gyermek runbook paramétereinek értékeit egyetlen kivonatolóba kell kombinálni. Ez a kivonatoló csak egyszerű, tömb- és objektumadattípusokat tartalmazhat, amelyek JSON-szerializálást használnak. |
| Automation-fiók | A szülő runbook csak egy gyermek runbookot használhat ugyanabban az Automation-fiókban. | A szülő runbookok bármilyen Automation-fiókból, ugyanabból az Azure-előfizetésből, vagy akár egy másik előfizetésből is használhatnak gyermek runbookot, amelyhez ön rendelkezik kapcsolattal. |
| Könyvkiadás | A gyermek runbookot közzé kell tenni a szülő runbook közzététele előtt. | A gyermek runbookok a szülő runbook elindítása előtt bármikor közzé lesznek téve. |
Gyermek runbook meghívása beágyazott végrehajtással
Ha egy runbookot egy másik runbookból szeretne beágyazottként meghívni, használja a runbook nevét, és adja meg a paraméterek értékeit, ugyanúgy, mint egy tevékenységet vagy parancsmagot. Az ugyanabban az Automation-fiókban lévő összes runbook minden más számára elérhető, így használható. A szülő runbook megvárja, amíg a gyermek runbook befejeződik, mielőtt továbblépne a következő sorra, és a kimenet közvetlenül a szülőnek ad vissza.
Amikor beágyazott runbookot hív meg, az ugyanabban a feladatban fut, mint a szülő runbook. A gyermek runbook feladatelőzményeiben nincs jelzés. A gyermek runbook kivételei és streamkimenetei a szülőhöz vannak társítva. Ez a viselkedés kevesebb feladatot eredményez, és megkönnyíti a nyomon követési és hibaelhárítási feladatokat.
Egy runbook közzétételekor a hívott gyermek runbookokat már közzé kell tenni. Ennek az az oka, hogy az Azure Automation társításokat hoz létre a gyermek runbookokkal, amikor egy runbookot állít össze. Ha a gyermek runbookok még nem lettek közzétéve, a szülő runbook úgy tűnik, hogy megfelelően közzéteszi, de kivételt hoz létre az indításkor.
Ha kivételt kap, újra közzéteheti a szülő runbookot, hogy megfelelően hivatkozzon a gyermek runbookokra. Nem kell újból közzétennie a szülő runbookot, ha bármely gyermek runbook módosult, mert a társítás már létrejött.
A beágyazott gyermek runbook paraméterei bármilyen típusúak lehetnek, beleértve az összetett objektumokat is. Nincs JSON-szerializálás, mint amikor elindítja a runbookot az Azure Portal vagy a Start-AzAutomationRunbook parancsmag használatával.
Runbook-típusok
Jelenleg a PowerShell 5.1 támogatott, és csak bizonyos runbooktípusok hívhatják egymást:
- A PowerShell-runbookok és a grafikus runbookok beágyazottan hívhatják egymást, mivel mindkettő PowerShell-alapú.
- A PowerShell-munkafolyamat runbook közvetlenül hívhatja meg egy másik PowerShell-munkafolyamat runbookot.
- A PowerShell-típusok és a PowerShell-munkafolyamat-típusok nem tudják egymást beágyazottan meghívni. Használniuk kell
Start-AzAutomationRunbookőket.
Fontos
- A gyermekszkripteket
.\child-runbook.ps1nem támogatja a PowerShell 7.1 és a PowerShell 7.2 kerülő megoldása: HasználjaStart-AutomationRunbooka (belső parancsmagot) vagyStart-AzAutomationRunbook(az Az.Automation modulból) egy másik runbook elindításához a szülő runbookból. - A gyermekszkriptek grafikus PowerShell-munkafolyamat-runbookokkal történő végrehajtása nem támogatott.
Megkerülő megoldás: Használja a
Start-AzAutomationRunbook-t (az Az.Automation modulból) a szülő runbookon belül egy InlineScript-blokkon keresztül, hogy elindítson egy másik runbookot.
A runbookok közzétételi sorrendje csak a PowerShell-munkafolyamat-runbookok esetében számít.
Amikor a runbook beágyazott végrehajtással meghív egy PowerShell-munkafolyamat gyermek runbookját, a runbook nevét használja. A névnek azzal .\\ kell kezdődnie, hogy a szkript a helyi könyvtárban legyen.
Példa
Az alábbi példa elindít egy teszt gyermek runbookot, amely egy összetett objektumot, egy egész számot és egy logikai értéket fogad el. A gyermek runbook kimenete egy változóhoz van rendelve. Ebben az esetben a gyermek runbook egy PowerShell-munkafolyamat-runbook.
$vm = Get-AzVM -ResourceGroupName "LabRG" -Name "MyVM"
$output = PSWF-ChildRunbook -VM $vm -RepeatCount 2 -Restart $true
Ugyanez a példa, de egy PowerShell-runbookot használ, mint a gyermek.
$vm = Get-AzVM -ResourceGroupName "LabRG" -Name "MyVM"
$output = .\PS-ChildRunbook.ps1 -VM $vm -RepeatCount 2 -Restart $true
Gyermek runbook indítása parancsmaggal
Fontos
Ha a runbook a paraméterrel rendelkező Start-AzAutomationRunbook parancsmaggal Wait meghív egy gyermek runbookot, és a gyermek runbook objektumeredményt hoz létre, a művelet hibát tapasztalhat. A hiba megkerüléséhez tekintse meg az objektumkimenettel rendelkező gyermek runbookokat. Ez a cikk bemutatja, hogyan valósíthatja meg az eredmények lekérdezésére szolgáló logikát a Get-AzAutomationJobOutputRecord parancsmaggal.
A runbookok indítására a Windows PowerShell-lelStart-AzAutomationRunbookleírtak szerint van lehetőség. A parancsmag kétféleképpen használható:
- A parancsmag visszaadja a feladat azonosítóját, amikor a gyermek runbookhoz létrejön a feladat.
- A parancsmag megvárja, amíg a gyermekfeladat befejeződik, és visszaadja a gyermek runbook kimenetét. A szkript a paraméter megadásával engedélyezi ezt a
Waitmódot.
A gyermek runbookból származó feladat egy parancsmaggal indult, amely a szülő runbook-feladattól külön fut. Ez a viselkedés több feladatot eredményez, mint a runbook beágyazott indítása, és megnehezíti a feladatok nyomon követését. A szülő aszinkron módon több gyermek runbookot is elindíthat anélkül, hogy mindegyik befejeződik. A gyermek runbookok beágyazott meghívásához a szülő runbooknak a párhuzamos kulcsszót kell használnia.
A gyermek runbook kimenete az időzítés miatt nem tér vissza megbízhatóan a szülő runbookhoz. Emellett előfordulhat, $VerbosePreferencehogy a , $WarningPreferenceés más változók nem propagálhatók a gyermek runbookokra. A problémák elkerülése érdekében a paraméterrel külön Automation-feladatként Start-AzAutomationRunbook indíthatja el a Wait gyermek runbookokat. Ez a technika letiltja a szülő runbookot, amíg a gyermek runbook be nem fejeződik.
Ha nem szeretné, hogy a szülő runbook várakoztatás közben le legyen tiltva, a paraméter nélkül is elindíthatja a Start-AzAutomationRunbook gyermek runbookotWait. Ebben az esetben a runbooknak a Get-AzAutomationJob használatával kell várnia a feladat befejezését. Az eredmények lekéréséhez a Get-AzAutomationJobOutput és a Get-AzAutomationJobOutputRecord parancsot is használnia kell.
A parancsmaggal indított gyermek runbook paraméterei kivonatolóként vannak megadva, a Runbook paramétereiben leírtak szerint. Csak egyszerű adattípusokat használhat. Ha a runbook egy összetett adattípusú paraméterrel rendelkezik, akkor beágyazottnak kell hívni.
Az előfizetési környezet elveszhet, amikor külön feladatként kezdi el a gyermek runbookokat. Ahhoz, hogy a gyermek runbook végrehajtsa az Az modul parancsmagjait egy adott Azure-előfizetésen, a gyermeknek a szülő runbooktól függetlenül hitelesítenie kell ezt az előfizetést.
Ha az ugyanazon Automation-fiókban lévő feladatok több előfizetéssel is működnek, az egyik feladatban lévő előfizetés kiválasztása megváltoztathatja a többi feladat aktuális előfizetési környezetét. A helyzet elkerülése érdekében használja Disable-AzContextAutosave -Scope Process az egyes runbookok elején. Ez a művelet csak a runbook végrehajtásához menti a környezetet.
Példa
Az alábbi példa elindít egy gyermek runbookot paraméterekkel, majd megvárja, amíg a Start-AzAutomationRunbook parancsmagot használja a Wait paraméterrel. A gyermek runbook befejezése után a példa a gyermek runbook parancsmag-kimenetét gyűjti össze. A használatához Start-AzAutomationRunbooka szkriptnek hitelesítenie kell az Azure-előfizetését.
# Ensure that the runbook does not inherit an AzContext
Disable-AzContextAutosave -Scope Process
# Connect to Azure with system-assigned managed identity
$AzureContext = (Connect-AzAccount -Identity).context
# set and store context
$AzureContext = Set-AzContext -SubscriptionName $AzureContext.Subscription -DefaultProfile $AzureContext
$params = @{"VMName"="MyVM";"RepeatCount"=2;"Restart"=$true}
Start-AzAutomationRunbook `
-AutomationAccountName 'MyAutomationAccount' `
-Name 'Test-ChildRunbook' `
-ResourceGroupName 'LabRG' `
-DefaultProfile $AzureContext `
-Parameters $params -Wait
Ha azt szeretné, hogy a runbook a rendszer által hozzárendelt felügyelt identitással fusson, hagyja meg a kódot. Ha inkább felhasználó által hozzárendelt felügyelt identitást szeretne használni, akkor:
- Az 5. sorból távolítsa el
$AzureContext = (Connect-AzAccount -Identity).contexta - Cserélje le a
$AzureContext = (Connect-AzAccount -Identity -AccountId <ClientId>).context - Adja meg az ügyfél azonosítóját.
Következő lépések
- A runbook futtatásához lásd : Runbook indítása az Azure Automationben.
- A runbook működésének monitorozásához tekintse meg a Runbook kimenetét és üzenetét az Azure Automationben.