Starten eines Runbooks in Azure Automation

Die folgende Tabelle hilft Ihnen dabei herauszufinden, welche Methode zum Starten eines Runbooks in Azure Automation sich am besten für Ihr jeweiliges Szenario eignet. Dieser Artikel enthält Details zum Starten eines Runbooks über das Azure-Portal oder mit Windows PowerShell. Details zu den anderen Methoden werden in anderen Artikeln bereitgestellt, auf die Sie über unten stehende Links zugreifen können.

Methode Merkmale
Azure portal
  • Einfachste Methode mit interaktiver Benutzeroberfläche.
  • Formular zum Bereitstellen von einfachen Parameterwerten.
  • Einfaches Nachverfolgen des Auftragsstatus.
  • Authentifizierter Zugriff über Azure-Anmeldung.
  • Windows PowerShell
  • Aufruf über Befehlszeile mit Windows PowerShell-Cmdlets.
  • Kann in ein automatisiertes Feature mit mehreren Schritten eingebunden werden.
  • Anforderung wird über Zertifikat oder OAuth-Benutzerprinzipal/-Dienstprinzipal authentifiziert.
  • Bereitstellen von einfachen und komplexen Parameterwerten.
  • Nachverfolgen des Auftragsstatus.
  • Client erforderlich zur Unterstützung der PowerShell-Befehle.
  • Azure Automation-API
  • Flexibelste Methode, jedoch auch sehr komplex.
  • Aufruf aus jedem benutzerdefinierten Code, der HTTP-Anforderungen ausführen kann.
  • Anforderung wird über Zertifikat oder OAuth-Benutzerprinzipal/-Dienstprinzipal authentifiziert.
  • Bereitstellen von einfachen und komplexen Parameterwerten. Wenn Sie über die API ein Python-Runbook aufrufen, muss die JSON-Nutzlast serialisiert werden.
  • Nachverfolgen des Auftragsstatus.
  • Webhooks
  • Starten eines Runbooks über eine einzelne HTTP-Anforderung.
  • Authentifizierung über Sicherheitstoken in der URL.
  • Ein Client kann keine Parameterwerte überschreiben, die beim Erstellen des Webhooks festgelegt wurden. Ein Runbook kann einen einzelnen Parameter definieren, der mit den Details zur HTTP-Anforderung aufgefüllt wird.
  • Keine Möglichkeit, den Auftragsstatus über die Webhook-URL nachzuverfolgen.
  • Reagieren auf eine Azure-Warnung
  • Starten Sie ein Runbook als Reaktion auf eine Azure-Warnung.
  • Konfigurieren eines Webhooks für Runbook und Link zum Warnen.
  • Authentifizierung über Sicherheitstoken in der URL.
  • Zeitplan
  • Automatisches Starten eines Runbooks: stündlich, täglich, wöchentlich oder monatlich.
  • Bearbeiten des Zeitplans über das Azure-Portal, PowerShell-Cmdlets oder die Azure-API.
  • Bereitstellen von Parameterwerten, die mit dem Zeitplan verwendet werden sollen.
  • Über ein anderes Runbook
  • Verwenden eines Runbooks als Aktivität in einem anderen Runbook.
  • Nützlich bei Funktionen, die von mehreren Runbooks verwendet werden.
  • Bereitstellen von Parameterwerten für untergeordnete Runbooks und Verwenden der Ausgabe im übergeordneten Runbook.
  • Die folgende Abbildung veranschaulicht ausführlich die Prozessschritte im Lebenszyklus eines Runbooks. Dies umfasst verschiedene Arten, auf die ein Runbook in Azure Automation gestartet werden kann, sowie Komponenten, die erforderlich sind, damit ein Hybrid Runbook Worker Azure Automation-Runbooks ausführen und Interaktionen zwischen verschiedenen Komponenten unterstützen kann. Weitere Informationen zum Ausführen von Automation-Runbooks in Ihrem Rechenzentrum finden Sie unter Hybrid Runbook Worker

    Runbook Architecture

    Verwenden von Runbookparametern

    Wenn Sie ein Runbook über das Azure-Portal oder mit Windows PowerShell starten, wird die Anweisung über den Azure Automation-Webdienst gesendet. Dieser Dienst unterstützt keine Parameter mit komplexen Datentypen. Wenn Sie einen Wert für einen komplexen Parameter bereitstellen müssen, müssen Sie diesen inline aus einem anderen Runbook aufrufen, wie unter Untergeordnete Runbooks in Azure Automationbeschrieben.

    Der Azure Automation-Webdienst bietet spezielle Funktionen für Parameter, die bestimmte Datentypen verwenden, wie in den folgenden Abschnitten beschrieben.

    Benannte Werte

    Wenn der Parameter den Datentyp „[object]“ enthält, können Sie das folgende JSON-Format verwenden, um eine Liste benannter Werte an den Parameter zu senden: {Name1:Wert1, Name2:Wert2, Name3:Wert3}. Bei den Werten muss es sich um einfache Typen handeln. Das Runbook empfängt den Parameter als PSCustomObject mit Eigenschaften, die den einzelnen benannten Werten entsprechen.

    Betrachten Sie das folgende Testrunbook, das einen Parameter namens userakzeptiert.

    Workflow Test-Parameters
    {
       param (
          [Parameter(Mandatory=$true)][object]$user
       )
        $userObject = $user | ConvertFrom-JSON
        if ($userObject.Show) {
            foreach ($i in 1..$userObject.RepeatCount) {
                $userObject.FirstName
                $userObject.LastName
            }
        }
    }
    

    Für den Parameter "user" könnte folgender Text verwendet werden.

    {FirstName:'Joe',LastName:'Smith',RepeatCount:'2',Show:'True'}
    

    Dadurch wird die folgende Ausgabe zurückgegeben:

    Joe
    Smith
    Joe
    Smith
    

    Arrays

    Wenn es sich bei dem Parameter um ein Array wie beispielsweise [array] oder [string[]] handelt, können Sie das folgende JSON-Format verwenden, um eine Liste von Werten an den Parameter zu senden: [Wert1,Wert2,Wert3]. Bei den Werten muss es sich um einfache Typen handeln.

    Betrachten Sie das folgende Testrunbook, das einen Parameter namens userakzeptiert.

    Workflow Test-Parameters
    {
       param (
          [Parameter(Mandatory=$true)][array]$user
       )
        if ($user[3]) {
            foreach ($i in 1..$user[2]) {
                $ user[0]
                $ user[1]
            }
        }
    }
    

    Für den Parameter "user" könnte folgender Text verwendet werden.

    ["Joe","Smith",2,true]
    

    Dadurch wird die folgende Ausgabe zurückgegeben:

    Joe
    Smith
    Joe
    Smith
    

    Anmeldeinformationen

    Wenn der Parameter den Datentyp PSCredential aufweist, können Sie den Namen eines Azure Automation-Anmeldeinformationsobjekts bereitstellen. Das Runbook ruft die Anmeldeinformationen mit dem von Ihnen angegebenen Namen ab. Das folgende Testrunbook akzeptiert einen Parameter namens credential.

    Workflow Test-Parameters
    {
       param (
          [Parameter(Mandatory=$true)][PSCredential]$credential
       )
       $credential.UserName
    }
    

    Für den Parameter „user“ kann der folgende Text verwendet werden, vorausgesetzt, es ist ein Anmeldeinformationsobjekt namens My Credential vorhanden.

    My Credential
    

    Unter der Voraussetzung, dass der Benutzername in den Anmeldeinformationen jsmith lautet, wird folgende Ausgabe angezeigt.

    jsmith
    

    Starten eines Runbooks mit dem Azure-Portal

    1. Wählen Sie im Azure-Portal die Option Automation aus, und wählen Sie anschließend den Namen eines Automation-Kontos aus.
    2. Wählen Sie im linken Bereich Runbooks aus.
    3. Wählen Sie auf der Seite Runbook ein Runbook aus, und klicken Sie dann auf Starten.
    4. Wenn das Runbook Parameter enthält, werden Sie aufgefordert, für jeden Parameter einen Wert in ein Textfeld einzugeben. Weitere Informationen zu Parametern finden Sie unter Runbookparameter.
    5. Im Bereich Auftrag können Sie den Status des Runbookauftrags anzeigen.

    Starten eines Runbooks mit PowerShell

    Sie können das Cmdlet Start-AzAutomationRunbook verwenden, um ein Runbook mit Windows PowerShell zu starten. Der folgende Beispielcode startet ein Runbook namens Test-Runbook.

    Start-AzAutomationRunbook -AutomationAccountName "MyAutomationAccount" -Name "Test-Runbook" -ResourceGroupName "ResourceGroup01"
    

    Start-AzAutomationRunbook gibt ein Auftragsobjekt zurück, mit dem Sie den Status nachverfolgen können, sobald das Runbook gestartet wurde. Sie können dieses job-Objekt mit Get-AzAutomationJob verwenden, um den Status des Auftrags zu ermitteln, und Get-AzAutomationJobOutput, um seine Ausgabe abzurufen. Das folgende Beispiel startet ein Runbook namens Test-Runbook, wartet, bis die Ausführung beendet ist, und zeigt anschließend die Runbookausgabe an.

    $runbookName = "Test-Runbook"
    $ResourceGroup = "ResourceGroup01"
    $AutomationAcct = "MyAutomationAccount"
    
    $job = Start-AzAutomationRunbook -AutomationAccountName $AutomationAcct -Name $runbookName -ResourceGroupName $ResourceGroup
    
    $doLoop = $true
    While ($doLoop) {
       $job = Get-AzAutomationJob -AutomationAccountName $AutomationAcct -Id $job.JobId -ResourceGroupName $ResourceGroup
       $status = $job.Status
       $doLoop = (($status -ne "Completed") -and ($status -ne "Failed") -and ($status -ne "Suspended") -and ($status -ne "Stopped"))
    }
    
    Get-AzAutomationJobOutput -AutomationAccountName $AutomationAcct -Id $job.JobId -ResourceGroupName $ResourceGroup -Stream Output
    

    Wenn das Runbook Parameter erfordert, müssen Sie diese als Hashtabelle bereitstellen. Der Schlüssel der Hashtabelle muss dem Parameternamen entsprechen, und der Wert ist der Parameterwert. Das folgende Beispiel zeigt das Starten eines Runbooks mit zwei Zeichenfolgenparametern "FirstName" und "LastName", einem ganzzahligen Wert namens "RepeatCount" und einem booleschen Parameter namens "Show". Weitere Informationen zu Parametern finden Sie unter Runbookparameter.

    $params = @{"FirstName"="Joe";"LastName"="Smith";"RepeatCount"=2;"Show"=$true}
    Start-AzAutomationRunbook -AutomationAccountName "MyAutomationAccount" -Name "Test-Runbook" -ResourceGroupName "ResourceGroup01" -Parameters $params
    

    Nächste Schritte