Runbookok kezelése az Azure Automationben

Runbookot az Azure Automationbe úgy vehet fel, hogy létrehoz egy újat, vagy importál egy meglévőt egy fájlból vagy a Runbook-katalógusból. Ez a cikk a runbookok kezelésével kapcsolatos információkat, valamint a runbookok tervezésével kapcsolatos ajánlott mintákat és ajánlott eljárásokat ismerteti. A közösségi runbookok és modulok elérésének minden részletét megtalálja a Runbookban , valamint az Azure Automation modultáraiban.

Runbook létrehozása

Hozzon létre egy új runbookot az Azure Automationben az Azure Portal vagy a PowerShell használatával. A runbook létrehozása után a következő információk segítségével szerkesztheti:

Runbook létrehozása az Azure Portalon

  1. Jelentkezzen be az Azure Portalra.
  2. Keresse meg, majd válassza ki az Automatizálási fiókok elemet.
  3. Az Automation-fiókok oldalon válassza ki az Automation-fiókját a listából.
  4. Az Automation-fiókban válassza a Runbookok lehetőséget a Folyamatautomatizálás területen a runbookok listájának megnyitásához.
  5. Kattintson a Futtatókönyv létrehozása elemre.
    1. Nevezze el a runbookot.
    2. A Runbook típusa legördülő listából. Válassza ki a típusát. A runbook nevének betűvel kell kezdődnie, és tartalmazhat betűket, számokat, aláhúzásjeleket és kötőjeleket
    3. Válassza ki a futtatókörnyezet verzióját
    4. Adja meg a vonatkozó leírást
  6. A forgatókönyv létrehozásához kattintson a Létrehozás gombra.

Runbook létrehozása a PowerShell-lel

Üres runbook létrehozásához használja a New-AzAutomationRunbook parancsmagot. A(z) Type paraméterrel adhatja meg a(z) New-AzAutomationRunbook elemhez definiált runbooktípusok egyikét.

Az alábbi példa bemutatja, hogyan hozhat létre egy új üres runbookot.

$params = @{
    AutomationAccountName = 'MyAutomationAccount'
    Name                  = 'NewRunbook'
    ResourceGroupName     = 'MyResourceGroup'
    Type                  = 'PowerShell'
}
New-AzAutomationRunbook @params

Runbook importálása

Saját forgatókönyv létrehozásához importálhat PowerShell- vagy PowerShell-munkafolyamatot (.ps1), grafikus runbookot (.graphrunbook), illetve Python 2- vagy Python 3-szkriptet (.py). Az importálás során létrehozott runbook típusát az alábbi szempontok figyelembevételével adhatja meg.

  • Importálhat egy .ps1 fájlt, amely nem tartalmaz munkafolyamatot, akár egy PowerShell-runbookba, akár egy PowerShell Workflow-runbookba. Ha egy PowerShell-munkafolyamat-runbookba importálja, a rendszer munkafolyamattá alakítja. Ebben az esetben a runbook megjegyzéseket tartalmaz a végrehajtott módosítások leírásához.

  • PowerShell-munkafolyamatot tartalmazó .ps1 fájlt csak PowerShell-munkafolyamat-runbookba importálhat. Ha a fájl több PowerShell-munkafolyamatot tartalmaz, az importálás sikertelen lesz. Minden munkafolyamatot saját fájlba kell mentenie, és külön kell importálnia őket.

  • PowerShell-munkafolyamatot tartalmazó .ps1 fájlt ne importáljon PowerShell-runbookba, mert a PowerShell-szkriptmotor nem ismeri fel.

  • Csak egy .graphrunbook fájlt importálhat egy új grafikus runbookba.

Runbook importálása az Azure portálról

Az alábbi eljárással importálhat szkriptfájlokat az Azure Automationbe.

Megjegyzés

Csak a portál használatával importálhat egy .ps1 fájlt egy PowerShell-munkafolyamat runbookba.

  1. Az Azure Portalon keresse meg az Automation-fiókok lehetőséget, és válassza ki.
  2. Az Automation-fiókok oldalon válassza ki az Automation-fiókot a listából.
  3. Az Automation-fiókban válassza a Runbookok lehetőséget a Folyamatautomatizálás területen a runbookok listájának megnyitásához.
  4. Kattintson a Runbook importálása gombra. Az alábbi lehetőségek közül választhat:
    1. Keresse meg a fájlt – kiválaszt egy fájlt a helyi gépről.
    2. Tallózás a katalógusból – Tallózhat, és kiválaszthat egy meglévő runbookot a katalógusból.
  5. Válassza ki a fájlt.
  6. Ha a Név mező engedélyezve van, módosíthatja a runbook nevét. A névnek betűvel kell kezdődnie, és tartalmazhat betűket, számokat, aláhúzásjeleket és kötőjeleket.
  7. A Runbook típusa automatikusan fel lesz töltve, de a típust a vonatkozó korlátozások figyelembe vétele után módosíthatja.
  8. A futtatókörnyezet verziója automatikusan ki van töltve, vagy válassza ki a verziót a legördülő listából.
  9. Kattintson az Importálás elemre. Az új runbook megjelenik az Automation-fiókhoz tartozó runbookok listájában.
  10. A runbook futtatása előtt közzé kell tennie azt.

Megjegyzés

Miután importált egy grafikus runbookot, konvertálhatja egy másik típusúvá. A grafikus runbookokat azonban nem konvertálhatja szöveges runbookmá.

Runbook importálása a PowerShell használatával

A Import-AzAutomationRunbook parancsmag használatával egy szkriptfájlt vázlat runbookként importálhat. Ha a runbook már létezik, az importálás meghiúsul, hacsak nem használja a Force paramétert a parancsmaggal.

Az alábbi példa bemutatja, hogyan importálhat szkriptfájlt egy runbookba.

$params = @{
    AutomationAccountName = 'MyAutomationAccount'
    Name                  = 'Sample_TestRunbook'
    ResourceGroupName     = 'MyResourceGroup'
    Type                  = 'PowerShell'
    Path                  = 'C:\Runbooks\Sample_TestRunbook.ps1'
}
Import-AzAutomationRunbook @params

Erőforrások kezelése

Ha a runbook létrehoz egy erőforrást, a szkriptnek ellenőriznie kell, hogy az erőforrás már létezik-e a létrehozási kísérlet előtt. Íme egy egyszerű példa.

$vmName = 'WindowsVM1'
$rgName = 'MyResourceGroup'
$myCred = Get-AutomationPSCredential 'MyCredential'

$vmExists = Get-AzResource -Name $vmName -ResourceGroupName $rgName
if (-not $vmExists) {
    Write-Output "VM $vmName does not exist, creating"
    New-AzVM -Name $vmName -ResourceGroupName $rgName -Credential $myCred
} else {
    Write-Output "VM $vmName already exists, skipping"
}

Részletek lekérése a tevékenységnaplóból

Az Automation-fiók Tevékenységnaplójából lekérheti a runbook részleteit, például azt a személyt vagy fiókot, amely elindította a runbookot. Az alábbi PowerShell-példa a megadott runbook futtatásához az utolsó felhasználót biztosítja.

$rgName = 'MyResourceGroup'
$accountName = 'MyAutomationAccount'
$runbookName = 'MyRunbook'
$startTime = (Get-Date).AddDays(-1)

$params = @{
    ResourceGroupName = $rgName
    StartTime         = $startTime
}
$JobActivityLogs = (Get-AzLog @params).Where( { $_.Authorization.Action -eq 'Microsoft.Automation/automationAccounts/jobs/write' })

$JobInfo = @{}
foreach ($log in $JobActivityLogs) {
    # Get job resource
    $JobResource = Get-AzResource -ResourceId $log.ResourceId

    if ($null -eq $JobInfo[$log.SubmissionTimestamp] -and $JobResource.Properties.Runbook.Name -eq $runbookName) {
        # Get runbook
        $jobParams = @{
            ResourceGroupName     = $rgName
            AutomationAccountName = $accountName
            Id                    = $JobResource.Properties.JobId
        }
        $Runbook = Get-AzAutomationJob @jobParams | Where-Object RunbookName -EQ $runbookName

        # Add job information to hashtable
        $JobInfo.Add($log.SubmissionTimestamp, @($Runbook.RunbookName, $Log.Caller, $JobResource.Properties.jobId))
    }
}
$JobInfo.GetEnumerator() | Sort-Object Key -Descending | Select-Object -First 1

Haladás nyomon követése

Célszerű a runbookokat moduláris természetűnek létrehozni, olyan logikával, amely könnyen újra felhasználható és újraindulhat. A runbookban a folyamat előrehaladásának nyomon követése segít biztosítani, hogy a runbook logikája problémák esetén megfelelően hajtódjon végre.

A runbookok előrehaladását külső forrás, például tárfiók, adatbázis vagy megosztott fájlok használatával követheti nyomon. Hozzon létre logikát a runbookban az utolsó végrehajtott művelet állapotának ellenőrzéséhez. Ezután az ellenőrzés eredményei alapján a logika kihagyhat vagy folytathat bizonyos feladatokat a runbookban.

Egyidejű feladatok megakadályozása

Egyes runbookok furcsán viselkednek, ha egyszerre több feladaton futnak. Ebben az esetben fontos, hogy egy runbook logikát implementáljon annak megállapításához, hogy van-e már futó feladat. Íme egy egyszerű példa.

# Ensures you do not inherit an AzContext in your runbook
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

# Check for already running or new runbooks 
$runbookName = "runbookName" 
$resourceGroupName = "resourceGroupName" 
$automationAccountName = "automationAccountName"

$jobs = Get-AzAutomationJob -ResourceGroupName $resourceGroupName -AutomationAccountName $automationAccountName -RunbookName $runbookName -DefaultProfile $AzureContext

# Ranking all the active jobs
$activeJobs = $jobs | where {$_.status -eq 'Running' -or $_.status -eq 'Queued' -or $_.status -eq 'New' -or $_.status -eq 'Activating' -or $_.status -eq 'Resuming'} | Sort-Object -Property CreationTime 
$jobRanking = @() 
$rank = 0 
ForEach($activeJob in $activeJobs) 
{         
    $rank = $rank + 1 
    $activeJob | Add-Member -MemberType NoteProperty -Name jobRanking -Value $rank -Force 
    $jobRanking += $activeJob 
}
    
$AutomationJobId = $PSPrivateMetadata.JobId.Guid 
$currentJob = $activeJobs | where {$_.JobId -eq $AutomationJobId} 
$currentJobRank = $currentJob.jobRanking 

# Only allow the Job with Rank = 1 to start processing. 
If($currentJobRank -ne "1") 
{ 
    Write-Output "$(Get-Date -Format yyyy-MM-dd-hh-mm-ss.ffff) Concurrency check failed as Current Job Ranking is not 1 but $($currentJobRank) therefore exiting..." 
    Exit 
} Else
{
    Write-Output "$(Get-Date -Format yyyy-MM-dd-hh-mm-ss.ffff) Concurrency check passed. Start processing.." 
} 

Ha azt szeretné, hogy a runbook a rendszer által hozzárendelt felügyelt identitással fusson, hagyja változatlanul a kódot. Ha inkább felhasználó által hozzárendelt felügyelt identitást szeretne használni, akkor:

  1. Az 5. sorból távolítsa el $AzureContext = (Connect-AzAccount -Identity).contexta
  2. Cserélje le erre: $AzureContext = (Connect-AzAccount -Identity -AccountId <ClientId>).context, majd
  3. Adja meg az ügyfél azonosítóját.

Megjegyzés

PowerShell 7.2 hibrid feladatok esetén végezze el a módosításokat a 28. sorban. Cserélje le a $PSPrivateMetadata.JobId.Guid elemet erre: $env:PSPrivateMetaData.

Időfüggő szkriptek átmeneti hibáinak kezelése

A runbookoknak robusztusnak kell lenniük, és képeseknek kell lenniük a hibák kezelésére, beleértve az átmeneti hibákat is, amelyek újraindítást vagy sikertelen működést okozhatnak. Ha egy runbook meghibásodik, az Azure Automation újrapróbálkozza.

Ha a runbook általában adott időkorláton belül fut le, a szkript valósítson meg olyan logikát, amely ellenőrzi a végrehajtási időt. Ez az ellenőrzés biztosítja, hogy az olyan műveletek, mint az indítás, a leállítás vagy a horizontális skálázás, csak meghatározott időpontokban hajthatók végre.

Megjegyzés

Az Azure-tesztkörnyezeti folyamat helyi ideje UTC értékre van állítva. A runbookok dátum- és időszámításainak figyelembe kell venniük ezt a tényt.

Újrapróbálkozási logika a runbookban az átmeneti hibák elkerülése érdekében

A runbookok gyakran kezdeményeznek hívásokat távoli rendszerekbe, például az Azure-ba ARM-en, Azure Resource Graphon, SQL-szolgáltatásokon és egyéb webszolgáltatásokon keresztül. Ha a runbookok által hívott rendszer foglalt, ideiglenesen nem érhető el, vagy terhelés alatt szabályozza a rendszert, a hívások futásidejű hibák esetén sebezhetőek lesznek. A runbookok rugalmasságának kialakításához újrapróbálkozási logikát kell alkalmazni a hívások indításakor, hogy a runbookok hiba nélkül tudják kezelni az átmeneti problémákat.

További információ: Újrapróbálkozási minta és általános REST és újrapróbálkozási irányelvek.

1. példa: Ha a runbook csak egy vagy két hívást indít

$searchServiceURL = "https://$searchServiceName.search.windows.net"
$resource = Get-AzureRmResource -ResourceType "Microsoft.Search/searchServices" -ResourceGroupName $searchResourceGroupName -ResourceName  $searchServiceName -ApiVersion 2015-08-19
$searchAPIKey = (Invoke-AzureRmResourceAction -Action listAdminKeys -ResourceId $resource.ResourceId -ApiVersion 2015-08-19 -Force).PrimaryKey

A Invoke-AzureRmResourceAction meghívásakor átmeneti hibákat tapasztalhat. Ilyen esetben javasoljuk, hogy a következő alapszintű mintát alkalmazza a parancsmag hívása körül.

$searchServiceURL = "https://$searchServiceName.search.windows.net"
$resource = Get-AzureRmResource -ResourceType "Microsoft.Search/searchServices" -ResourceGroupName $searchResourceGroupName -ResourceName  $searchServiceName -ApiVersion 2015-08-19

    # Adding in a retry
    $Stoploop = $false
    $Retrycount = 0
 
    do {
        try   {
               $searchAPIKey = (Invoke-AzureRmResourceAction -Action listAdminKeys -ResourceId $resource.ResourceId -ApiVersion 2015-08-19 -Force).PrimaryKey
               write-verbose "Invoke-AzureRmResourceAction on $resource.ResourceId completed"
               $Stoploop = $true
              }
        catch {
               if ($Retrycount -gt 3)
                 {
                  Write-verbose "Could not Invoke-AzureRmResourceAction on $resource.ResourceId after 3 retrys."
                  $Stoploop = $true
                 }
               else  
                 {
                  Write-verbose "Could not Invoke-AzureRmResourceAction on $resource.ResourceId retrying in 30 seconds..."
                  Start-Sleep -Seconds 30
                  $Retrycount = $Retrycount + 1
                 }
               }
        }
    While ($Stoploop -eq $false)

Megjegyzés

A hívás újrapróbálása legfeljebb háromszor történik, az egyes próbálkozások között 30 másodperces várakozással.

2. példa: Ha a runbook gyakran végez távoli hívásokat

Ha a runbook gyakran végez távoli hívásokat, átmeneti futásidejű problémákat tapasztalhat. Hozzon létre egy függvényt, amely újrapróbálkozási logikát implementál minden egyes végrehajtott híváshoz, és a kezdeményezendő hívást egy végrehajtandó szkriptblokként adja át.

Function ResilientRemoteCall {

         param(
               $scriptblock
               )
        
         $Stoploop = $false
         $Retrycount = 0
 
         do {
             try   {
                    Invoke-Command -scriptblock $scriptblock 
                    write-verbose "Invoked $scriptblock completed"
                    $Stoploop = $true
                   }
             catch {
                    if ($Retrycount -gt 3)
                      {
                       Write-verbose "Invoked $scriptblock failed 3 times and we will not try again."
                       $Stoploop = $true
                      }
                    else  
                      {
                       Write-verbose "Invoked $scriptblock failed  retrying in 30 seconds..."
                       Start-Sleep -Seconds 30
                       $Retrycount = $Retrycount + 1
                      }
                    }
             }
         While ($Stoploop -eq $false)
}

Ezután az egyes távoli hívásokat így adhatja át a függvénynek:

ResilientRemoteCall { Get-AzVm }
vagy

ResilientRemoteCall { $searchAPIKey = (Invoke-AzureRmResourceAction -Action listAdminKeys -ResourceId $resource.ResourceId -ApiVersion 2015-08-19 -Force).PrimaryKey}

Munka több előfizetéssel

A runbooknak képesnek kell lennie az előfizetésekkel való együttműködésre. Több előfizetés kezeléséhez például a runbook a Disable-AzContextAutosave parancsmagot használja. Ez a parancsmag biztosítja, hogy a hitelesítési környezet ne kérhető le egy másik runbookból, amely ugyanabban a tesztkörnyezetben fut.

# Ensures you do not inherit an AzContext in your runbook
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

$childRunbookName = 'childRunbookDemo'
$resourceGroupName = "resourceGroupName"
$automationAccountName = "automationAccountName"

$startParams = @{
    ResourceGroupName     = $resourceGroupName
    AutomationAccountName = $automationAccountName
    Name                  = $childRunbookName
    DefaultProfile        = $AzureContext
}
Start-AzAutomationRunbook @startParams

Ha azt szeretné, hogy a runbook a rendszer által hozzárendelt felügyelt identitással fusson, hagyja a kódot változatlanul. Ha inkább felhasználó által hozzárendelt felügyelt identitást szeretne használni, akkor:

  1. Az 5. sorból távolítsa el $AzureContext = (Connect-AzAccount -Identity).contexta
  2. Cserélje le a(z) $AzureContext = (Connect-AzAccount -Identity -AccountId <ClientId>).context elemre, és
  3. Adja meg az ügyfél azonosítóját.

Egyéni szkriptek futtatása

Megjegyzés

Általában nem futtathat egyéni szkripteket és runbookokat azon a gazdagépen, amelyen Log Analytics-ügynök van telepítve.

Egyéni szkript használata:

  1. Hozzon létre egy Automation-fiókot.
  2. Telepítse a Hybrid Runbook Worker szerepkört.

Runbook tesztelése

Runbook tesztelésekor a rendszer végrehajtja a piszkozatverziót , és az általa végrehajtott műveletek befejeződnek. A rendszer nem hoz létre feladatelőzményeket, de a kimenet, a figyelmeztetés és a hibastreamek megjelennek a Tesztkimenet panelen. A részletes adatfolyamnak küldött üzenetek csak akkor jelennek meg a Kimenet ablaktáblán, ha a VerbosePreference változó értéke Continue.

Annak ellenére, hogy a Piszkozat verzió futtatása folyamatban van, a runbook továbbra is a szokásos módon hajtja végre a műveletet a környezetben lévő erőforrásokon. Ezért csak nem éles erőforrásokon tesztelje a runbookokat.

Megjegyzés

Az összes runbook-végrehajtási művelet az Automation-fiók Tevékenységnaplójában van naplózva egy Azure Automation-feladat létrehozása műveletnévvel. A runbook végrehajtása azonban egy olyan tesztpanelen, amelyen a runbook piszkozatverziója kerül végrehajtásra, a tevékenységnaplókban a(z) Write an Azure Automation runbook draft műveletnévvel kerül naplózásra. Válassza a Művelet és a JSON lapokat a ../runbooks/(runbook name)/draft/testjob végződésű hatókör megtekintéséhez.

Az egyes runbook-típusok tesztelésének eljárása ugyanaz. Az Azure Portalon nincs különbség a szöveges szerkesztő és a grafikus szerkesztő közötti tesztelésben.

  1. Nyissa meg a runbook Piszkozat verzióját a szövegszerkesztőben vagy a grafikus szerkesztőben.
  2. Kattintson a Teszt gombra a Teszt lap megnyitásához.
  3. Ha a runbook rendelkezik paraméterekkel, azok a bal oldali panelen jelennek meg, ahol megadhatja a teszthez használandó értékeket.
  4. Ha hibrid runbook-feldolgozón szeretné futtatni a tesztet, módosítsa a futtatási beállításokat hibrid feldolgozóra, és válassza ki a célcsoport nevét. Ellenkező esetben tartsa meg az alapértelmezett Azure-t a teszt felhőben való futtatásához.
  5. Kattintson a Start gombra a teszt megkezdéséhez.
  6. A Kimenet panel gombjaival leállíthat vagy felfüggeszthet egy PowerShell-munkafolyamatot vagy grafikus runbookot a tesztelés alatt. Ha felfüggeszti a runbookot, az befejezi az aktuális tevékenységet, mielőtt felfüggesztésre kerül. A runbook felfüggesztése után leállíthatja vagy újraindíthatja azt.
  7. Vizsgálja meg a runbook kimenetét a Kimenet panelen.

Forgatókönyv közzététele

Új runbook létrehozásakor vagy importálásakor azt közzé kell tennie, mielőtt futtathatná. Az Azure Automation minden runbookja piszkozatverzióval és közzétett verzióval rendelkezik. Csak a közzétett verzió futtatható, és csak a vázlatverzió szerkeszthető. A közzétett verzióra nincsenek hatással a vázlatverzióban végrehajtott módosítások. Amikor elérhetővé kell tenni a Piszkozat verziót, közzé kell tennie azt, felülírva az aktuális közzétett verziót a Piszkozat verzióval.

Runbook közzététele az Azure Portalon

  1. Az Azure Portalon keresse meg az Automation-fiókok lehetőséget, és válassza ki.
  2. Az Automation-fiókok oldalon válassza ki az Automation-fiókot a listából.
  3. Nyissa meg a runbookot az Automation-fiókjában.
  4. Kattintson a Szerkesztés gombra.
  5. Kattintson a Közzététel gombra, majd válassza az Igen lehetőséget az ellenőrző üzenetre válaszul.

Runbook közzététele a PowerShell használatával

A Runbook közzétételéhez használja a Publish-AzAutomationRunbook parancsmagot.

$accountName = "MyAutomationAccount"
$runbookName = "Sample_TestRunbook"
$rgName = "MyResourceGroup"

$publishParams = @{
    AutomationAccountName = $accountName
    ResourceGroupName     = $rgName
    Name                  = $runbookName
}
Publish-AzAutomationRunbook @publishParams

Runbook ütemezése az Azure portálon

Miután közzétette a runbookot, beütemezheti a futtatását:

  1. Az Azure Portalon keresse meg az Automation-fiókok lehetőséget, és válassza ki.
  2. Az Automation-fiókok oldalon válassza ki az Automation-fiókot a listából.
  3. Válassza ki a runbookot a runbookok listájából.
  4. Válassza az Ütemezések lehetőséget az Erőforrások területen.
  5. Válassza az Ütemezés hozzáadása lehetőséget.
  6. A Runbook ütemezése panelen válassza az Ütemezés csatolása a runbookhoz lehetőséget.
  7. Válassza az Új ütemezés létrehozása lehetőséget az Ütemezés panelen.
  8. Adjon meg egy nevet, leírást és egyéb paramétereket az Új ütemezés panelen.
  9. Az ütemezés létrehozása után jelölje ki, és kattintson az OK gombra. Most már hozzá kell kapcsolni a runbookhoz.
  10. Keressen egy e-mailt a postaládájában, amely értesíti Önt a runbook állapotáról.

Törölt runbook visszaállítása

A törölt runbookokat PowerShell-szkriptekkel állíthatja helyre. A runbook helyreállításához győződjön meg arról, hogy a következő feltételek teljesülnek:

  • A visszaállítandó runbookok az elmúlt 29 napban lettek törölve.
  • Létezik az automatizálási fiók ehhez a runbookhoz.
  • Az Automation-közreműködő szerepkörre vonatkozó engedély az Automation-fiók rendszer által hozzárendelt felügyelt identitásához van megadva.

PowerShell-szkript

  • Futtassa a PowerShell-szkriptet feladatként az Automation-fiókban a törölt runbookok visszaállításához.
  • Töltse le a PowerShell-szkriptet a GitHubról. Másik lehetőségként importálhatja a Restore Automation runbook nevű PowerShell-szkriptet a Runbook-katalógusból. Adja meg a visszaállítani kívánt runbook nevét, és futtassa feladatként az Azure Automationben a törölt runbookok visszaállításához.
  • Töltse le a szkriptet a GitHubról, vagy importálja a List Deleted Automation Runbook nevű PowerShell-szkriptet a RunbookTárból az elmúlt 29 napban törölt runbookok nevének azonosításához.

Feladatállapotok lekérése

Állapotok megtekintése az Azure Portalon

Az Azure Automation feladatkezelésének részleteit a Feladatok területen találja. Ha készen áll a runbook-feladatok megtekintésére, használja az Azure Portalt, és lépjen az Automation-fiókjához. A jobb oldalon megtekintheti a feladatstatisztikákban szereplő összes runbook-feladat összegzését.

Feladatstatisztika csempe

Az összegzés az egyes végrehajtott feladatok feladatállapotának számát és grafikus ábrázolását jeleníti meg.

A csempére kattintva megjelenik a Feladatok lap, amely tartalmazza az összes végrehajtott feladat összesített listáját. Ez az oldal az egyes feladatok állapotát, a runbook nevét, a kezdési időpontját és a befejezési időpontját jeleníti meg.

Képernyőkép a Feladatok lapról.

A feladatok listájának szűréséhez válassza a Feladatok szűrése lehetőséget. Szűrjön egy adott runbookra, feladatállapotra vagy a legördülő listából választott elemre, és adja meg a keresés időintervallumát.

Feladat állapotának szűrése

Másik lehetőségként megtekintheti egy adott runbook feladatösszegző adatait úgy is, hogy kiválasztja a runbookot az Automation-fiók Runbookok lapján, majd kiválasztja a Feladatokat. Ez a művelet a Feladatok lapot jeleníti meg. Itt a feladatrekordra kattintva megtekintheti annak részleteit és kimenetét.

Képernyőkép a Feladatok lapról, amelyen a Hibák gomb ki van emelve.

Feladatállapotok lekérése a PowerShell használatával

A Get-AzAutomationJob parancsmaggal lekérheti a runbookhoz létrehozott feladatokat és egy adott feladat részleteit. Ha egy runbookot a Start-AzAutomationRunbook használatával indít el, a rendszer a létrejövő feladatot adja vissza. A Feladat kimenetének lekéréséhez használja a Get-AzAutomationJobOutput parancsot.

Az alábbi példa lekéri egy minta runbook utolsó feladatát, és megjeleníti annak állapotát, a runbook paramétereihez megadott értékeket és a feladat kimenetét.

$getJobParams = @{
    AutomationAccountName = 'MyAutomationAccount'
    ResourceGroupName     = 'MyResourceGroup'
    Runbookname           = 'Test-Runbook'
}
$job = (Get-AzAutomationJob @getJobParams | Sort-Object LastModifiedDate -Desc)[0]
$job | Select-Object JobId, Status, JobParameters

$getOutputParams = @{
    AutomationAccountName = 'MyAutomationAccount'
    ResourceGroupName     = 'MyResourceGroup'
    Id                    = $job.JobId
    Stream                = 'Output'
}
Get-AzAutomationJobOutput @getOutputParams

Az alábbi példa egy adott feladat kimenetét kéri le, és minden rekordot visszaad. Ha az egyik rekord kivételt képez, a szkript az érték helyett a kivételt írja. Ez a viselkedés hasznos, mivel a kivételek olyan további információkat adhatnak meg, amelyek nem feltétlenül naplózhatók a kimenet során.

$params = @{
    AutomationAccountName = 'MyAutomationAccount'
    ResourceGroupName     = 'MyResourceGroup'
    Stream                = 'Any'
}
$output = Get-AzAutomationJobOutput @params

foreach ($item in $output) {
    $jobOutParams = @{
        AutomationAccountName = 'MyAutomationAccount'
        ResourceGroupName     = 'MyResourceGroup'
        Id                    = $item.StreamRecordId
    }
    $fullRecord = Get-AzAutomationJobOutputRecord @jobOutParams

    if ($fullRecord.Type -eq 'Error') {
        $fullRecord.Value.Exception
    } else {
        $fullRecord.Value
    }
}

Következő lépések