Udostępnij za pośrednictwem


Zarządzanie elementami Runbook w usłudze Azure Automation

Element Runbook można dodać do usługi Azure Automation, tworząc nowy lub importując istniejący element z pliku lub galerii elementów Runbook. Ten artykuł zawiera informacje dotyczące zarządzania elementem Runbook oraz zalecanymi wzorcami i najlepszymi rozwiązaniami dotyczącymi projektowania elementów Runbook. Wszystkie szczegóły uzyskiwania dostępu do elementów Runbook i modułów społeczności można znaleźć w galeriach elementów Runbook i modułów dla usługi Azure Automation.

Tworzenie elementu runbook

Utwórz nowy element Runbook w usłudze Azure Automation przy użyciu witryny Azure Portal lub programu PowerShell. Po utworzeniu elementu Runbook można go edytować przy użyciu informacji w:

Tworzenie elementu Runbook w witrynie Azure Portal

  1. Zaloguj się w witrynie Azure Portal.
  2. Wyszukaj i wybierz pozycję Konta usługi Automation.
  3. Na stronie Konta usługi Automation wybierz konto usługi Automation z listy.
  4. Na koncie usługi Automation wybierz pozycję Elementy Runbook w obszarze Automatyzacja procesów, aby otworzyć listę elementów Runbook.
  5. Kliknij pozycję Utwórz element Runbook.
    1. Nadaj elementowi runbook nazwę .
    2. Z listy rozwijanej Typ elementu Runbook. Wybierz jego typ. Nazwa elementu Runbook musi zaczynać się literą i może zawierać litery, cyfry, podkreślenia i kreski
    3. Wybierz wersję środowiska uruchomieniowego
    4. Wprowadź odpowiedni opis
  6. Kliknij przycisk Utwórz, aby utworzyć element Runbook.

Tworzenie elementu Runbook przy użyciu programu PowerShell

Użyj polecenia cmdlet New-AzAutomationRunbook , aby utworzyć pusty element Runbook. Użyj parametru Type , aby określić jeden z typów elementów Runbook zdefiniowanych dla elementu New-AzAutomationRunbook.

W poniższym przykładzie pokazano, jak utworzyć nowy pusty element Runbook.

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

Importuj element Runbook

Możesz zaimportować skrypt przepływu pracy programu PowerShell lub programu PowerShell (ps1), graficzny element Runbook (.graphrunbook) lub skrypt języka Python 2 lub Python 3 (py), aby utworzyć własny element Runbook. Należy określić typ elementu Runbook , który jest tworzony podczas importowania, biorąc pod uwagę następujące kwestie.

  • Plik ps1, który nie zawiera przepływu pracy, można zaimportować do elementu Runbook programu PowerShell lub elementu Runbook przepływu pracy programu PowerShell. Jeśli zaimportujesz go do elementu Runbook przepływu pracy programu PowerShell, zostanie on przekonwertowany na przepływ pracy. W takim przypadku komentarze są uwzględniane w elemecie Runbook w celu opisania wprowadzonych zmian.

  • Do elementu Runbook przepływu pracy programu PowerShell można zaimportować tylko plik ps1 zawierający przepływ pracy programu PowerShell. Jeśli plik zawiera wiele przepływów pracy programu PowerShell, importowanie zakończy się niepowodzeniem. Musisz zapisać każdy przepływ pracy we własnym pliku i zaimportować każdy oddzielnie.

  • Nie należy importować pliku ps1 zawierającego przepływ pracy programu PowerShell do elementu Runbook programu PowerShell, ponieważ aparat skryptów programu PowerShell nie może go rozpoznać.

  • Zaimportuj tylko plik graphrunbook do nowego graficznego elementu Runbook.

Importowanie elementu Runbook z witryny Azure Portal

Poniższa procedura umożliwia zaimportowanie pliku skryptu do usługi Azure Automation.

Uwaga

Plik ps1 można zaimportować tylko do elementu Runbook przepływu pracy programu PowerShell przy użyciu portalu.

  1. W witrynie Azure Portal wyszukaj i wybierz pozycję Konta automatyzacji.
  2. Na stronie Konta usługi Automation wybierz konto usługi Automation z listy.
  3. Na koncie usługi Automation wybierz pozycję Elementy Runbook w obszarze Automatyzacja procesów, aby otworzyć listę elementów Runbook.
  4. Kliknij pozycję Importuj element Runbook. Możesz wybrać jedną z następujących opcji:
    1. Przeglądaj pod kątem pliku — wybiera plik z komputera lokalnego.
    2. Przeglądaj z galerii — możesz przeglądać i wybierać istniejący element Runbook z galerii.
  5. Wybierz plik.
  6. Jeśli pole Nazwa jest włączone, możesz zmienić nazwę elementu Runbook. Nazwa musi zaczynać się literą i może zawierać litery, cyfry, podkreślenia i kreski.
  7. Typ elementu Runbook jest wypełniany automatycznie, ale można zmienić typ po uwzględnieniu odpowiednich ograniczeń.
  8. Wersja środowiska uruchomieniowego jest wypełniana automatycznie lub wybiera wersję z listy rozwijanej.
  9. Kliknij przycisk Importuj. Nowy runbook pojawia się na liście runbooków dla konta Automation.
  10. Aby móc użyć przepływu procesów, należy opublikować runbooka.

Uwaga

Po zaimportowaniu graficznego elementu Runbook można przekonwertować go na inny typ. Nie można jednak przekonwertować graficznego elementu Runbook na tekstowy element Runbook.

Importowanie elementu Runbook przy użyciu programu PowerShell

Za pomocą polecenia cmdlet Import-AzAutomationRunbook zaimportuj plik skryptu jako roboczy element Runbook. Jeśli element Runbook już istnieje, importowanie zakończy się niepowodzeniem, chyba że użyjesz parametru Force z poleceniem cmdlet .

W poniższym przykładzie pokazano, jak zaimportować plik skryptu do elementu Runbook.

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

Obsługa zasobów

Jeśli element Runbook tworzy zasób, skrypt powinien sprawdzić, czy zasób już istnieje przed podjęciem próby jego utworzenia. Oto podstawowy przykład.

$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"
}

Pobieranie szczegółów z dziennika aktywności

Możesz pobrać szczegóły elementu Runbook, takie jak osoba lub konto, które uruchomiło element Runbook, z dziennika aktywności dla konta usługi Automation. Poniższy przykład programu PowerShell udostępnia ostatniego użytkownika do uruchomienia określonego elementu Runbook.

$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

Śledzenie postępu

Dobrym rozwiązaniem jest utworzenie elementów Runbook w naturze modułowych z logiką, którą można łatwo użyć i uruchomić ponownie. Śledzenie postępu w elemecie Runbook gwarantuje, że logika elementu Runbook jest wykonywana poprawnie, jeśli występują problemy.

Postęp elementu Runbook można śledzić przy użyciu zewnętrznego źródła, takiego jak konto magazynu, baza danych lub pliki udostępnione. Utwórz logikę w elemecie Runbook, aby najpierw sprawdzić stan ostatniej akcji podjętej. Następnie na podstawie wyników sprawdzania logika może pominąć lub kontynuować określone zadania w elemecie Runbook.

Zapobieganie współbieżnych zadaniach

Niektóre elementy Runbook zachowują się dziwnie, jeśli działają w wielu zadaniach jednocześnie. W takim przypadku ważne jest, aby element Runbook implementować logikę w celu określenia, czy istnieje już uruchomione zadanie. Oto podstawowy przykład.

# 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.." 
} 

Jeśli chcesz, aby element Runbook był wykonywany przy użyciu tożsamości zarządzanej przypisanej przez system, pozostaw kod w stanie rzeczywistym. Jeśli wolisz użyć tożsamości zarządzanej przypisanej przez użytkownika, wykonaj:

  1. Z wiersza 5 usuń $AzureContext = (Connect-AzAccount -Identity).contextelement ,
  2. Zastąp go ciągiem $AzureContext = (Connect-AzAccount -Identity -AccountId <ClientId>).context, i
  3. Wprowadź identyfikator klienta.

Uwaga

W przypadku zadań hybrydowych programu PowerShell 7.2 wprowadź zmiany w wierszu 28. Zamień $PSPrivateMetadata.JobId.Guid na $env:PSPrivateMetaData.

Obsługa błędów przejściowych w skrypcie zależnym od czasu

Elementy Runbook muszą być niezawodne i zdolne do obsługi błędów, w tym błędów przejściowych, które mogą powodować ich ponowne uruchomienie lub niepowodzenie. Jeśli element Runbook zakończy się niepowodzeniem, usługa Azure Automation ponawia próbę.

Jeśli element Runbook zwykle działa w ramach ograniczenia czasu, należy zastosować logikę implementowania skryptu, aby sprawdzić czas wykonywania. Ta kontrola zapewnia uruchamianie operacji, takich jak uruchamianie, zamykanie lub skalowanie w poziomie tylko w określonych godzinach.

Uwaga

Czas lokalny w procesie piaskownicy platformy Azure ma wartość UTC. Obliczenia dotyczące daty i godziny w elementach Runbook muszą wziąć pod uwagę ten fakt.

Logika ponawiania prób w elemencie Runbook w celu uniknięcia przejściowych błędów

Elementy Runbook często tworzą wywołania systemów zdalnych, takich jak Platforma Azure za pośrednictwem usługi ARM, usługi Azure Resource Graph, usług SQL i innych usług internetowych. Gdy system, który wywołuje elementy Runbook, jest zajęty, tymczasowy niedostępny lub implementujący ograniczanie przepustowości pod obciążeniem, wywołania są narażone na błędy środowiska uruchomieniowego. Aby utworzyć odporność w elementach Runbook, należy zaimplementować logikę ponawiania podczas wykonywania wywołań, aby elementy Runbook mogły obsłużyć przejściowy problem bez awarii.

Aby uzyskać więcej informacji, zobacz Retry pattern (Wzorzec ponawiania prób) oraz Ogólne wytyczne dotyczące rest i ponawiania prób.

Przykład 1: Jeśli element Runbook wykonuje tylko jedno lub dwa wywołania

$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

Podczas wywoływania Invoke-AzureRmResourceActionmetody można obserwować błędy przejściowe. W takim scenariuszu zalecamy zaimplementowanie następującego podstawowego wzorca wokół wywołania polecenia cmdlet.

$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)

Uwaga

Próba ponawiania próby wywołania jest maksymalnie trzy razy, spana przez 30 sekund za każdym razem.

Przykład 2: jeśli element Runbook wykonuje częste wywołania zdalne

Jeśli element Runbook wykonuje częste wywołania zdalne, może wystąpić przejściowe problemy ze środowiskiem uruchomieniowym. Utwórz funkcję, która implementuje logikę ponawiania dla każdego wykonanego wywołania i przekaże wywołanie do wykonania jako blok skryptu.

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)
}

Następnie można przekazać każde zdalne wywołanie do funkcji jako

ResilientRemoteCall { Get-AzVm }
lub

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

Praca z wieloma subskrypcjami

Element Runbook musi mieć możliwość pracy z subskrypcjami. Na przykład w celu obsługi wielu subskrypcji element Runbook używa polecenia cmdlet Disable-AzContextAutosave . To polecenie cmdlet gwarantuje, że kontekst uwierzytelniania nie zostanie pobrany z innego elementu Runbook uruchomionego w tej samej piaskownicy.

# 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

Jeśli chcesz, aby element Runbook był wykonywany przy użyciu tożsamości zarządzanej przypisanej przez system, pozostaw kod w stanie rzeczywistym. Jeśli wolisz użyć tożsamości zarządzanej przypisanej przez użytkownika, wykonaj:

  1. Z wiersza 5 usuń $AzureContext = (Connect-AzAccount -Identity).contextelement ,
  2. Zastąp go ciągiem $AzureContext = (Connect-AzAccount -Identity -AccountId <ClientId>).context, i
  3. Wprowadź identyfikator klienta.

Praca ze skryptem niestandardowym

Uwaga

Zwykle nie można uruchamiać skryptów niestandardowych i elementów Runbook na hoście z zainstalowanym agentem usługi Log Analytics.

Aby użyć niestandardowego skryptu:

  1. Tworzenie konta usługi Automation.
  2. Wdróż rolę hybrydowego procesu roboczego elementu Runbook.
  3. Jeśli na maszynie z systemem Linux potrzebujesz podniesionych uprawnień. Zaloguj się, aby wyłączyć kontrole podpisów.

Testowanie elementu Runbook

Podczas testowania elementu Runbook jest wykonywana wersja robocza i wszystkie wykonywane przez niego akcje zostaną ukończone. Historia zadań nie jest tworzona, ale dane wyjściowe i strumienie ostrzeżeń i błędów są wyświetlane w okienku Dane wyjściowe testu. Komunikaty do pełnego strumienia są wyświetlane w okienku Dane wyjściowe tylko wtedy, gdy zmienna VerbosePreference jest ustawiona na Continuewartość .

Mimo że wersja robocza jest uruchamiana, element Runbook nadal jest wykonywany normalnie i wykonuje wszelkie akcje względem zasobów w środowisku. Z tego powodu należy testować tylko elementy Runbook w zasobach nieprodukcyjnych.

Uwaga

Wszystkie akcje wykonywania elementu Runbook są rejestrowane w dzienniku aktywności konta automatyzacji z nazwą operacji Tworzenie zadania usługi Azure Automation. Jednak wykonanie elementu Runbook w okienku testowym, w którym jest wykonywana wersja robocza elementu Runbook, zostanie zarejestrowane w dziennikach aktywności przy użyciu nazwy operacji Zapisywanie wersji roboczej elementu Runbook usługi Azure Automation. Wybierz kartę Operation (Operacja) i JSON (Kod JSON), aby wyświetlić zakres kończący się ciągiem .. /runbook/(nazwa elementu runbook)/draft/testjob.

Procedura testowania każdego typu elementu Runbook jest taka sama. Nie ma różnicy w testowaniu między edytorem tekstowym a edytorem graficznym w witrynie Azure Portal.

  1. Otwórz wersję roboczą elementu Runbook w edytorze tekstowym lub edytorze graficznym.
  2. Kliknij pozycję Testuj, aby otworzyć stronę Test.
  3. Jeśli element runbook ma parametry, są one wypisane w okienku po lewej stronie, gdzie można podać wartości do użycia podczas testu.
  4. Jeśli chcesz uruchomić test w hybrydowym procesie roboczym elementu Runbook, zmień pozycję Uruchom Ustawienia na hybrydowy proces roboczy i wybierz nazwę grupy docelowej. W przeciwnym razie zachowaj domyślną platformę Azure , aby uruchomić test w chmurze.
  5. Kliknij przycisk Start , aby rozpocząć test.
  6. Możesz użyć przycisków w okienku Dane wyjściowe , aby zatrzymać lub zawiesić przepływ pracy programu PowerShell lub graficzny element Runbook podczas testowania. Gdy element Runbook zostanie wstrzymany, przed jego wstrzymaniem zostanie ukończone bieżące działanie. Po wstrzymaniu elementu Runbook można go zatrzymać lub uruchomić ponownie.
  7. Sprawdź dane wyjściowe z elementu Runbook w okienku Dane wyjściowe .

Publikowanie elementu Runbook

Podczas tworzenia lub importowania nowego elementu Runbook należy go opublikować, zanim będzie można go uruchomić. Każdy element Runbook w usłudze Azure Automation ma wersję roboczą i opublikowaną wersję. Tylko opublikowana wersja jest dostępna do uruchomienia i można edytować tylko wersję roboczą. Wersja opublikowana nie ma wpływu na wszelkie zmiany wersji roboczej. Po udostępnieniu wersji roboczej należy opublikować ją, zastępując bieżącą opublikowaną wersję wersją roboczą.

Publikowanie elementu runbook w witrynie Azure Portal

  1. W witrynie Azure Portal wyszukaj i wybierz pozycję Konta automatyzacji.
  2. Na stronie Konta usługi Automation wybierz konto usługi Automation z listy.
  3. Otwórz element runbook na koncie usługi Automation.
  4. Kliknij przycisk Edytuj.
  5. Kliknij przycisk Publikuj , a następnie wybierz pozycję Tak w odpowiedzi na komunikat weryfikacyjny.

Publikowanie elementu Runbook przy użyciu programu PowerShell

Użyj polecenia cmdlet Publish-AzAutomationRunbook, aby opublikować element Runbook.

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

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

Planowanie użycia elementu Runbook w witrynie Azure Portal

Po opublikowaniu elementu Runbook można zaplanować jego działanie:

  1. W witrynie Azure Portal wyszukaj i wybierz pozycję Konta automatyzacji.
  2. Na stronie Konta usługi Automation wybierz konto usługi Automation z listy.
  3. Wybierz element Runbook z listy elementów Runbook.
  4. Wybierz pozycję Harmonogramy w obszarze Zasoby.
  5. Wybierz pozycję Dodaj harmonogram.
  6. W okienku Planowanie elementu Runbook wybierz pozycję Połącz harmonogram z elementem Runbook.
  7. Wybierz pozycję Utwórz nowy harmonogram w okienku Harmonogram .
  8. Wprowadź nazwę, opis i inne parametry w okienku Nowy harmonogram .
  9. Po utworzeniu harmonogramu zaznacz go i kliknij przycisk OK. Powinien on być teraz połączony z elementem Runbook.
  10. Poszukaj wiadomości e-mail w skrzynce pocztowej, aby powiadomić Cię o stanie elementu Runbook.

Przywracanie usuniętego elementu Runbook

Usunięty element Runbook można odzyskać za pomocą skryptów programu PowerShell. Aby odzyskać element Runbook, upewnij się, że spełnione są następujące warunki:

  • Elementy Runbook do przywrócenia zostały usunięte w ciągu ostatnich 29 dni.
  • Konto usługi Automation dla tego elementu Runbook istnieje.
  • Uprawnienie współautora usługi Automation jest przyznawane tożsamości zarządzanej przypisanej przez system konta usługi Automation.

Skrypt programu PowerShell

  • Wykonaj skrypt programu PowerShell jako zadanie na koncie usługi Automation, aby przywrócić usunięte elementy Runbook.
  • Pobierz skrypt programu PowerShell z usługi GitHub. Alternatywnie możesz zaimportować skrypt programu PowerShell o nazwie Restore Automation runbook z galerii elementów Runbook. Podaj nazwę elementu Runbook, który ma zostać przywrócony i uruchom go jako zadanie w usłudze Azure Automation, aby przywrócić usunięte elementy Runbook.
  • Pobierz skrypt z usługi GitHub lub zaimportujskrypt programu PowerShell o nazwie List Deleted Automation Runbook z galerii elementów Runbook, aby zidentyfikować nazwy elementów Runbook, które zostały usunięte w ciągu ostatnich 29 dni.

Uzyskiwanie stanów zadań

Wyświetlanie stanów w witrynie Azure Portal

Szczegółowe informacje o obsłudze zadań w usłudze Azure Automation znajdują się w obszarze Zadania. Gdy wszystko będzie gotowe do wyświetlenia zadań elementu Runbook, użyj witryny Azure Portal i uzyskaj dostęp do konta usługi Automation. Po prawej stronie można wyświetlić podsumowanie wszystkich zadań elementu Runbook w obszarze Statystyki zadań.

Job Statistics tile

W podsumowaniu jest wyświetlana liczba i graficzna reprezentacja stanu zadania dla każdego wykonanego zadania.

Kliknięcie kafelka powoduje wyświetlenie strony Zadania, która zawiera podsumowaną listę wszystkich wykonanych zadań. Na tej stronie przedstawiono stan, nazwę elementu Runbook, godzinę rozpoczęcia i godzinę ukończenia każdego zadania.

Screenshot of the Jobs page.

Listę zadań można filtrować, wybierając pozycję Filtruj zadania. Filtruj według określonego elementu Runbook, stanu zadania lub wyboru z listy rozwijanej i podaj zakres czasu wyszukiwania.

Filter job status

Alternatywnie możesz wyświetlić szczegóły podsumowania zadania dla określonego elementu Runbook, wybierając ten element Runbook na stronie Elementy Runbook na koncie usługi Automation, a następnie wybierając pozycję Zadania. Ta akcja powoduje wyświetlenie strony Zadania. W tym miejscu możesz kliknąć rekord zadania, aby wyświetlić jego szczegóły i dane wyjściowe.

Screenshot of the Jobs page with the Errors button highlighted.

Pobieranie stanów zadań przy użyciu programu PowerShell

Użyj polecenia cmdlet Get-AzAutomationJob, aby pobrać zadania utworzone dla elementu Runbook i szczegóły określonego zadania. Jeśli uruchomisz element Runbook przy użyciu polecenia Start-AzAutomationRunbook, zwraca wynikowe zadanie. Użyj polecenia Get-AzAutomationJobOutput , aby pobrać dane wyjściowe zadania.

Poniższy przykład pobiera ostatnie zadanie dla przykładowego elementu Runbook i wyświetla jego stan, wartości podane dla parametrów elementu Runbook i dane wyjściowe zadania.

$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

Poniższy przykład pobiera dane wyjściowe dla określonego zadania i zwraca każdy rekord. Jeśli istnieje wyjątek dla jednego z rekordów, skrypt zapisuje wyjątek zamiast wartości. To zachowanie jest przydatne, ponieważ wyjątki mogą udostępniać dodatkowe informacje, które mogą nie być rejestrowane normalnie podczas danych wyjściowych.

$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
    }
}

Następne kroki