Megosztás a következőn keresztül:


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 és jelölje ki az Automation-fiókok elemet.
  3. Az Automation-fiókok oldalon válassza ki az Automation-fiókját.
  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 Runbook létrehozása elemre.
    1. Nevezze el a runbookot.
    2. A Runbook típusa legördülő listában. 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 paraméter használatával Type adja meg az egyik runbooktípust, amely a következőhöz van definiálva New-AzAutomationRunbook: .

Az alábbi példa bemutatja, hogyan hozhat létre ú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 PowerShell-runbookba vagy PowerShell-munkafolyamat-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 .graphrunbook-fájlt importálhat egy új grafikus runbookba.

Runbook importálása az Azure Portalról

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

Feljegyzés

A portálon csak .ps1 fájlt importálhat 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ókját.
  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ók runbookjainak listájában.
  10. A futtatás előtt közzé kell tennie a runbookot .

Feljegyzés

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

Runbook importálása a PowerShell-lel

Az Import-AzAutomationRunbook parancsmaggal szkriptfájlt importálhat piszkozat runbookként. 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, aki 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

Követés állapota

Célszerű a runbookokat moduláris természetűnek létrehozni, olyan logikával, amely könnyen újra felhasználható és újraindulhat. A runbookok előrehaladásának nyomon követése biztosítja, hogy a runbook logikája megfelelően fusson, ha problémák merülnek fel.

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 meg 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 a $AzureContext = (Connect-AzAccount -Identity -AccountId <ClientId>).context
  3. Adja meg az ügyfél azonosítóját.

Feljegyzé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 a $env:PSPrivateMetaData kérdésre.

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 egy időkorláton belül fut, használja a szkript implementálási logikáját a végrehajtási idő ellenőrzéséhez. Ez az ellenőrzés csak bizonyos időszakokban biztosítja az olyan műveletek futtatását, mint az indítás, a leállítás vagy a vertikális felskálázás.

Feljegyzé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

Híváskor Invoke-AzureRmResourceActioná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)

Feljegyzés

A hívás újrapróbálkozási kísérlete legfeljebb háromszor, minden alkalommal 30 másodpercig alvó állapotban van.

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 minden távoli hívást átadhat a függvénynek a következő módon:

ResilientRemoteCall { Get-AzVm }
vagy

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

Több előfizetés használata

A runbooknak képesnek kell lennie az előfizetések használatára. 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 meg 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 a $AzureContext = (Connect-AzAccount -Identity -AccountId <ClientId>).context
  3. Adja meg az ügyfél azonosítóját.

Egyéni szkriptek futtatása

Feljegyzés

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

Egyéni szkript használata:

  1. Hozzon létre egy Automation-fiókot.
  2. Telepítse a hibrid runbook-feldolgozó szerepkört.
  3. Ha Linux rendszerű gépen van szükség emelt szintű jogosultságokra. Jelentkezzen be az aláírás-ellenőrzések kikapcsolásához.

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 panelen, 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.

Feljegyzé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ás azonban egy tesztpanelen, ahol a runbook piszkozatverziója fut, a tevékenységnaplókban egy Azure Automation-runbook piszkozat írása műveletnévvel lesz naplózva. Válassza a Művelet és a JSON fület a hatókör .végződésű megjelenítéséhez. /runbooks/(runbook name)/draft/testjob.

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, a runbook a felfüggesztés előtt befejezi az aktuális tevékenységet. A runbook felfüggesztése után leállíthatja vagy újraindíthatja.
  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 közzé kell azt 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ókját.
  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 Portalon

A runbook közzététele után ütemezheti a művelethez:

  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ókját.
  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. 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ó runbookokat az elmúlt 29 napban törölték.
  • A runbook Automation-fiókja létezik.
  • Az Automation-közreműködő szerepkör engedélyét az Automation-fiók rendszer által hozzárendelt felügyelt identitása kapja meg.

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 a lap az egyes feladatok állapotát, runbooknevét, kezdési idejét és befejezési idejé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 állapotára vagy a legördülő listából választott lehetőségre, és adja meg a keresés időtartományá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 használatával Start-AzAutomationRunbookindít el, az visszaadja az eredményül kapott feladatot. 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