Das Prozessautomatisierungsfeature von Azure Automation unterstützt verschiedene Runbooktypen, die in der folgenden Tabelle definiert sind.
| Typ |
Beschreibung |
PowerShell (empfohlen) |
Textrunbook, das auf einem Windows PowerShell-Skript basiert. Die derzeit unterstützten Versionen sind PowerShell 7.6, PowerShell 7.4 und PowerShell 5.1. Da PowerShell 7.1 und PowerShell 7.2 nicht mehr vom Elternprodukt PowerShell unterstützt werden, erstellen Sie Runbooks für langfristig unterstützte Versionen wie PowerShell 7.6 oder PowerShell 7.4. |
|
PowerShell-Workflow |
Textrunbook, das auf einem Windows PowerShell-Workflowskript basiert. |
Python (empfohlen) |
Textrunbook, das auf einem Python-Skript basiert. Die derzeit unterstützte Version ist Python 3.10. Da Python 2.7 und Python 3.8 nicht mehr von übergeordnetem Produkt Python unterstützt werden, empfehlen wir, Runbooks in Python 3.10 zu erstellen. |
|
Grafisch |
Grafisches Runbook, das auf Windows PowerShell basiert und vollständig im grafischen Editor im Azure-Portal erstellt und bearbeitet wird. |
|
PowerShell-Workflow, grafisch |
Grafisches Runbook, das auf dem Windows PowerShell-Workflow basiert und vollständig im grafischen Editor im Azure-Portal erstellt und bearbeitet wird. |
Weitere Informationen zur Prozessautomatisierungsumgebung finden Sie unter Ausführen von Runbooks in Azure Automation.
Hinweis
Azure Automation folgt dem Supportlebenszyklus von PowerShell- und Python-Sprachversionen gemäß den Zeitplänen, die von den übergeordneten Produkten, PowerShell und Python, veröffentlicht wurden. Es wird empfohlen, Runbooks mit unterstützten Sprachversionen zu verwenden.
Berücksichtigen Sie bei der Ermittlung des für ein bestimmtes Runbook zu verwendenden Typs die folgenden Überlegungen:
- Runbooks können nicht aus einem grafischen in einen textbasierten Typ oder umgekehrt konvertiert werden.
- Es gibt Einschränkungen bei der Verwendung von Runbooks verschiedener Typen als untergeordnete Runbooks. Weitere Informationen finden Sie unter Untergeordnete Runbooks in Azure Automation.
PowerShell-Runbooks
PowerShell-Runbooks basieren auf Windows PowerShell. Sie bearbeiten den Code des Runbooks direkt mit dem Text-Editor im Azure-Portal. Sie können auch einen beliebigen Offline-Texteditor verwenden und das Runbook in Azure Automation importieren .
Die PowerShell-Version wird durch die angegebene Laufzeitversion bestimmt.
Derselbe Azure-Sandbox- und Hybrid-Runbook-Worker kann mehrere PowerShell-Runbooks für verschiedene Laufzeitversionen nebeneinander ausführen. PowerShell 7.6 und PowerShell 7.4 Laufzeitversionen werden sowohl für Cloud- als auch für Hybrid-Jobs in allen Regionen unterstützt.
Hinweis
- Wenn Sie zum Zeitpunkt der Ausführung des Runbook die Laufzeitversion als 7.4 auswählen, werden PowerShell-Module für die Laufzeitversion 7.4 verwendet, und wenn Sie Laufzeitversion als 5.1 auswählen, werden PowerShell-Module für 5.1-Laufzeitversion verwendet.
Stellen Sie sicher, dass Sie die richtige Runtimeversion für Module auswählen.
Beispiel: Wenn Sie ein Runbook für ein SharePoint-Automatisierungsszenario in Runtime Version7.4 ausführen, importieren Sie das Modul in Runtime Version7.4; Wenn Sie ein Runbook für ein SharePoint-Automatisierungsszenario in Runtime Version5.1 ausführen, importieren Sie das Modul in Runtime Version5.1.
Vorteile
- Implementierung der gesamten komplexen Logik mit PowerShell-Code ohne die zusätzliche Komplexität des PowerShell-Workflows.
- Schnellerer Start als PowerShell-Workflow-Runbooks, da vor der Ausführung keine Kompilierung erforderlich ist
- Werden in Azure und in Hybrid Runbook Workern sowohl für Windows als auch für Linux ausgeführt
Einschränkungen und bekannte Probleme
Im Folgenden sind die aktuellen Einschränkungen von sowie bekannten Probleme mit PowerShell-Runbooks aufgeführt:
Einschränkungen PowerShell 7.6 ist in der Laufzeitumgebung verfügbar.
Für die PowerShell 7.6-Laufzeitversion werden die Modulaktivitäten für die importierten Module nicht extrahiert.
PowerShell 7.x unterstützt keine Workflows. Weitere Informationen finden Sie im PowerShell-Workflow.
PowerShell 7.x unterstützt derzeit keine signierten Runbooks.
Die Versionskontrollintegration unterstützt PowerShell 7.6 nicht. Außerdem werden PowerShell 7.6-Runbooks in der Versionskontrolle im Automation-Konto als Runtime 5.1 erstellt.
Das Az-Modul 15.1.0 ist standardmäßig installiert. Die vollständige Liste der Komponentenmodule der ausgewählten Az-Modulversion wird angezeigt, sobald die Az-Version erneut mithilfe des Azure-Portals oder der API konfiguriert ist.
Importierte PowerShell 7.6-Module werden während der Jobausführung validiert. Stellen Sie sicher, dass alle Abhängigkeiten für das ausgewählte Modul für eine erfolgreiche Auftragsausführung ebenfalls importiert werden.
Azure Automation Runbooks unterstützen Start-Job mit -Credential nicht.
Azure unterstützt nicht alle PowerShell-Eingabeparameter.
Weitere Informationen
Bekannte Probleme
Runbooks, die von internen Dateipfaden abhängig sind, z. B. C:\modules, können aufgrund von Änderungen in der Dienst-Back-End-Infrastruktur fehlschlagen. Ändern Sie den Runbook-Code, um sicherzustellen, dass keine Abhängigkeiten von internen Dateipfaden vorhanden sind, und verwenden Sie Get-ChildItem, um die erforderlichen Modulinformationen abzurufen.
Das Get-AzStorageAccount-Cmdlet kann aufgrund eines Fehlers fehlschlagen: Der Get-AzStorageAccount-Befehl wurde im Modul Az.Storage gefunden, aber das Modul konnte nicht geladen werden.
Das Ausführen von untergeordneten Skripts mithilfe von .\child-runbook.ps1 wird nicht unterstützt.
Alternative Lösung: Verwenden Sie Start-AutomationRunbook (internes Cmdlet) oder Start-AzAutomationRunbook (aus dem Modul Az.Automation), um ein weiteres Runbook aus dem übergeordneten Runbook zu starten.
Wenn Sie das ExchangeOnlineManagement Modul in der Version 3.0.0 oder höher verwenden, können Fehler auftreten. Um das Problem zu beheben, stellen Sie sicher, dass Sie die PowerShellGet- und PackageManagement-Module explizit hochladen.
Wenn Sie das New-AzAutomationVariable-Cmdlet in Az.Automation-Modul verwenden, um eine Variable vom Typ Objekt hochzuladen, funktioniert der Vorgang nicht wie erwartet.
Problemumgehung: Konvertieren Sie das Objekt mithilfe des Cmdlets ConvertTo-Json in eine JSON-Zeichenfolge, und laden Sie dann die Variable mit der JSON-Zeichenfolge als Wert hoch. Diese Problemumgehung stellt sicher, dass die Variable innerhalb der Azure Automation-Umgebung ordnungsgemäß als JSON-Zeichenfolge behandelt wird.
Beispiel – Erstellen Sie ein PowerShell-Objekt, das Informationen über Azure-VMs speichert
azurepowershell
# Retrieve Azure virtual machines with status information for the 'northeurope' region
$AzVM = Get-AzVM -Status | Where-Object {$_.Location -eq "northeurope"}
$VMstopatch = @($AzVM).Id
# Create an Azure Automation variable (This cmdlet will not fail, but the variable may not work as intended when used in the runbook.)
New-AzAutomationVariable -ResourceGroupName "mrg" -AutomationAccountName "mAutomationAccount2" -Name "complex1" -Encrypted $false -Value $VMstopatch
# Convert the object to a JSON string
$jsonString = $VMstopatch | ConvertTo-Json
# Create an Azure Automation variable with a JSON string value (works effectively within the automation runbook)
New-AzAutomationVariable -ResourceGroupName "mrg" -AutomationAccountName "mAutomationAccount2" -Name "complex1" -Encrypted $false -Value $jsonString
Einschränkungen
Hinweis
Die PowerShell 7.4 Laufzeitversion unterstützt sowohl Cloud- als auch hybride Jobs in allen Regionen.
- Powershell 7.4 ist nur in der Laufzeitumgebungserfahrung verfügbar.
- Für die PowerShell 7.4-Laufzeitversion werden die Modulaktivitäten nicht für die importierten Module extrahiert. Verwenden Sie die Azure Automation-Erweiterung für VS Code , um die Erstellung von Runbooks zu vereinfachen.
- PowerShell 7.x unterstützt keine Workflows. Weitere Informationen finden Sie im PowerShell-Workflow für weitere Details.
- PowerShell 7.x unterstützt derzeit keine signierten Runbooks.
- Die Integration der Quellcodeverwaltung unterstützt PowerShell 7.4 nicht. Außerdem werden PowerShell 7.4-Runbooks in der Quellcodeverwaltung im Automatisierungskonto als Runtime 5.1 erstellt.
- Az-Modul 12.3.0 ist standardmäßig installiert. Die vollständige Liste der Komponentenmodule der ausgewählten Az-Modulversion wird angezeigt, sobald die Az-Version erneut mithilfe des Azure-Portals oder der API konfiguriert ist.
- Das importierte PowerShell 7.4-Modul wird während der Auftragsausführung überprüft. Stellen Sie sicher, dass alle Abhängigkeiten für das ausgewählte Modul für eine erfolgreiche Auftragsausführung ebenfalls importiert werden.
- Das Azure-Runbook unterstützt
Start-Job mit -credential nicht.
- Azure unterstützt nicht alle PowerShell-Eingabeparameter.
Weitere Informationen
Bekannte Probleme
Runbooks, die von internen Dateipfaden abhängig sind, z. B. C:\modules, können aufgrund von Änderungen in der Dienst-Back-End-Infrastruktur fehlschlagen. Ändern Sie den Runbook-Code, um sicherzustellen, dass keine Abhängigkeiten von internen Dateipfaden vorhanden sind, und verwenden Sie Get-ChildItem, um die erforderlichen Modulinformationen abzurufen.
Das Get-AzStorageAccount-Cmdlet kann aufgrund eines Fehlers fehlschlagen: Der Get-AzStorageAccount-Befehl wurde im Modul Az.Storage gefunden, aber das Modul konnte nicht geladen werden.
Das Ausführen von untergeordneten Skripts mithilfe von .\child-runbook.ps1 wird nicht unterstützt.
Alternative Lösung: Verwenden Sie Start-AutomationRunbook (internes Cmdlet) oder Start-AzAutomationRunbook (aus dem Modul Az.Automation), um ein weiteres Runbook aus dem übergeordneten Runbook zu starten.
Wenn Sie das ExchangeOnlineManagement Modul in der Version 3.0.0 oder höher verwenden, können Fehler auftreten. Um das Problem zu beheben, stellen Sie sicher, dass Sie die PowerShellGet- und PackageManagement-Module explizit hochladen.
Wenn Sie das New-AzAutomationVariable-Cmdlet in Az.Automation-Modul verwenden, um eine Variable vom Typ Objekt hochzuladen, funktioniert der Vorgang nicht wie erwartet.
Problemumgehung: Konvertieren Sie das Objekt mithilfe des Cmdlets ConvertTo-Json in eine JSON-Zeichenfolge, und laden Sie dann die Variable mit der JSON-Zeichenfolge als Wert hoch. Diese Problemumgehung stellt sicher, dass die Variable innerhalb der Azure Automation-Umgebung ordnungsgemäß als JSON-Zeichenfolge behandelt wird.
Beispiel: Erstellen eines PowerShell-Objekts, auf dem Informationen zu Azure-VMs gespeichert sind
azurepowershell
# Retrieve Azure virtual machines with status information for the 'northeurope' region
$AzVM = Get-AzVM -Status | Where-Object {$_.Location -eq "northeurope"}
$VMstopatch = @($AzVM).Id
# Create an Azure Automation variable (This cmdlet will not fail, but the variable may not work as intended when used in the runbook.)
New-AzAutomationVariable -ResourceGroupName "mrg" -AutomationAccountName "mAutomationAccount2" -Name "complex1" -Encrypted $false -Value $VMstopatch
# Convert the object to a JSON string
$jsonString = $VMstopatch | ConvertTo-Json
# Create an Azure Automation variable with a JSON string value (works effectively within the automation runbook)
New-AzAutomationVariable -ResourceGroupName "mrg" -AutomationAccountName "mAutomationAccount2" -Name "complex1" -Encrypted $false -Value $jsonString
Einschränkungen
Hinweis
Die Version PowerShell 7.2 wird vom übergeordneten Produkt PowerShell nicht mehr unterstützt.
- Für die PowerShell 7.2-Runtimeversion werden die Modulaktivitäten nicht für die importierten Module extrahiert.
- PowerShell 7.x unterstützt keine Workflows. Weitere Informationen finden Sie im PowerShell-Workflow für weitere Details.
- PowerShell 7.x unterstützt derzeit keine signierten Runbooks.
- Die Integration der Quellcodeverwaltung unterstützt PowerShell 7.2 nicht. Außerdem werden PowerShell 7.2-Runbooks in der Quellcodeverwaltung im Automation-Konto als Runtime 5.1 erstellt.
- Az-Modul 8.3.0 ist standardmäßig installiert. Die vollständige Liste der Komponentenmodule der ausgewählten Az-Modulversion wird angezeigt, sobald die Az-Version erneut mithilfe des Azure-Portals oder der API konfiguriert ist.
- Das importierte PowerShell 7.2-Modul würde während der Auftragsausführung überprüft. Stellen Sie sicher, dass alle Abhängigkeiten für das ausgewählte Modul für eine erfolgreiche Auftragsausführung ebenfalls importiert werden.
- Das Azure-Runbook unterstützt
Start-Job mit -credential nicht.
- Azure unterstützt nicht alle PowerShell-Eingabeparameter.
Weitere Informationen
Bekannte Probleme
Runbooks, die von internen Dateipfaden abhängig sind, z. B. C:\modules, können aufgrund von Änderungen in der Dienst-Back-End-Infrastruktur fehlschlagen. Ändern Sie den Runbook-Code, um sicherzustellen, dass keine Abhängigkeiten von internen Dateipfaden vorhanden sind, und verwenden Sie Get-ChildItem, um die erforderlichen Modulinformationen abzurufen.
Das Get-AzStorageAccount-Cmdlet kann aufgrund eines Fehlers fehlschlagen: Der Get-AzStorageAccount-Befehl wurde im Modul Az.Storage gefunden, aber das Modul konnte nicht geladen werden.
Das Ausführen von untergeordneten Skripts mithilfe von .\child-runbook.ps1 wird nicht unterstützt.
Alternative Lösung: Verwenden Sie Start-AutomationRunbook (internes Cmdlet) oder Start-AzAutomationRunbook (aus dem Modul Az.Automation), um ein weiteres Runbook aus dem übergeordneten Runbook zu starten.
Wenn Sie das ExchangeOnlineManagement Modul in der Version 3.0.0 oder höher verwenden, können Fehler auftreten. Um das Problem zu beheben, stellen Sie sicher, dass Sie die PowerShellGet- und PackageManagement-Module explizit hochladen.
Wenn Sie das New-AzAutomationVariable-Cmdlet in Az.Automation-Modul verwenden, um eine Variable vom Typ Objekt hochzuladen, funktioniert der Vorgang nicht wie erwartet.
Problemumgehung: Konvertieren Sie das Objekt mithilfe des Cmdlets ConvertTo-Json in eine JSON-Zeichenfolge, und laden Sie dann die Variable mit der JSON-Zeichenfolge als Wert hoch. Diese Problemumgehung stellt sicher, dass die Variable innerhalb der Azure Automation-Umgebung ordnungsgemäß als JSON-Zeichenfolge behandelt wird.
Beispiel: Erstellen eines PowerShell-Objekts, auf dem Informationen zu Azure-VMs gespeichert sind
azurepowershell
# Retrieve Azure virtual machines with status information for the 'northeurope' region
$AzVM = Get-AzVM -Status | Where-Object {$_.Location -eq "northeurope"}
$VMstopatch = @($AzVM).Id
# Create an Azure Automation variable (This cmdlet will not fail, but the variable may not work as intended when used in the runbook.)
New-AzAutomationVariable -ResourceGroupName "mrg" -AutomationAccountName "mAutomationAccount2" -Name "complex1" -Encrypted $false -Value $VMstopatch
# Convert the object to a JSON string
$jsonString = $VMstopatch | ConvertTo-Json
# Create an Azure Automation variable with a JSON string value (works effectively within the automation runbook)
New-AzAutomationVariable -ResourceGroupName "mrg" -AutomationAccountName "mAutomationAccount2" -Name "complex1" -Encrypted $false -Value $jsonString
Einschränkungen
- Runbooks können keine parallele Verarbeitung verwenden, um mehrere Aktionen parallel auszuführen.
- Runbooks können keine Prüfpunkte verwenden, um das Runbook fortzusetzen, wenn ein Fehler auftritt.
- Sie können nur PowerShell-, PowerShell-Workflow- und grafische Runbooks als untergeordnete Runbooks verwenden, indem Sie das Cmdlet Start-AzAutomationRunbook nutzen, mit dem ein neuer Auftrag erstellt wird.
- Für Runbooks kann die PowerShell-Anweisung #Requires nicht verwendet werden, da sie in der Azure-Sandbox oder auf Hybrid Runbook Workers nicht unterstützt wird und möglicherweise dazu führen kann, dass der Auftrag fehlschlägt.
- Das Azure-Runbook unterstützt
Start-Job mit -credential nicht.
- Azure unterstützt nicht alle PowerShell-Eingabeparameter.
Weitere Informationen
Bekannte Probleme
Runbooks, die von internen Dateipfaden abhängig sind, z. B. C:\modules, können aufgrund von Änderungen in der Dienst-Back-End-Infrastruktur fehlschlagen. Ändern Sie den Runbook-Code, um sicherzustellen, dass keine Abhängigkeiten von internen Dateipfaden vorhanden sind, und verwenden Sie Get-ChildItem, um die erforderlichen Modulinformationen abzurufen.
Beispielskript
# Get information about module "Microsoft.Graph.Authentication"
$ModuleName = "Microsoft.Graph.Authentication"
$NewPath = "C:\usr\src\PSModules\$ModuleName"
$OldPath = "C:\Modules\User\$ModuleName"
if (Test-Path -Path $NewPath -PathType Container) {
Get-ChildItem -Path $NewPath
} elseif (Test-Path -Path $OldPath -PathType Container) {
Get-ChildItem -Path $OldPath
} else {
Write-Output "Module $ModuleName not present."
}
# Getting the path to the Temp folder, if needed.
$tmp = $env:TEMP
Das Get-AzStorageAccount-Cmdlet kann aufgrund eines Fehlers fehlschlagen: Der Get-AzStorageAccount-Befehl wurde im Modul Az.Storage gefunden, aber das Modul konnte nicht geladen werden.
PowerShell-Runbooks können keine unverschlüsselten Variablenobjekte mit einem NULL-Wert abrufen.
PowerShell-Runbooks können kein Variablenobjekt abrufen, dessen Name *~* enthält.
Der Vorgang Get-Process in einer Schleife in einem PowerShell-Runbook kann nach etwa 80 Iterationen zum Absturz führen.
Ein PowerShell-Runbook kann einen Fehler verursachen, wenn es versucht, eine große Datenmenge auf einmal in den Ausgabestream zu schreiben. Sie können dieses Problem in der Regel vermeiden, indem Sie nur die für die Arbeit mit großen Objekten benötigten Informationen in die Runbookausgabe einfügen. Anstatt Get-Process ohne Einschränkungen zu verwenden, können Sie z. B. nur die erforderlichen Parameter in die Cmdlet-Ausgabe einfügen wie bei Get-Process | Select ProcessName, CPU.
Wenn Sie das ExchangeOnlineManagement-Modul in der Version 3.0.0 oder höher verwenden, können Fehler auftreten. Um das Problem zu beheben, stellen Sie sicher, dass Sie auch die PowerShellGet- und PackageManagement-Module explizit hochladen.
Wenn Sie das Modul Az.Accounts mit Version 2.12.3 oder höher importieren, stellen Sie sicher, dass Sie das Newtonsoft.Json v10-Modul explizit importieren, wenn PowerShell 5.1-Runbooks von dieser Version des Moduls abhängig sind. Die Problemumgehung für dieses Problem besteht darin, PowerShell 7.2-Runbooks zu verwenden.
Wenn Sie das New-AzAutomationVariable-Cmdlet in Az.Automation-Modul verwenden, um eine Variable vom Typ Objekt hochzuladen, funktioniert der Vorgang nicht wie erwartet.
Problemumgehung: Konvertieren Sie das Objekt mithilfe des Cmdlets ConvertTo-Json in eine JSON-Zeichenfolge, und laden Sie dann die Variable mit der JSON-Zeichenfolge als Wert hoch. Diese Problemumgehung stellt sicher, dass die Variable innerhalb der Azure Automation-Umgebung ordnungsgemäß als JSON-Zeichenfolge behandelt wird.
Beispiel: Erstellen eines PowerShell-Objekts, auf dem Informationen zu Azure-VMs gespeichert sind
# Retrieve Azure virtual machines with status information for the 'northeurope' region
$AzVM = Get-AzVM -Status | Where-Object {$_.Location -eq "northeurope"}
$VMstopatch = @($AzVM).Id
# Create an Azure Automation variable (This cmdlet will not fail, but the variable may not work as intended when used in the runbook.)
New-AzAutomationVariable -ResourceGroupName "mrg" -AutomationAccountName "mAutomationAccount2" -Name "complex1" -Encrypted $false -Value $VMstopatch
# Convert the object to a JSON string
$jsonString = $VMstopatch | ConvertTo-Json
# Create an Azure Automation variable with a JSON string value (works effectively within the automation runbook)
New-AzAutomationVariable -ResourceGroupName "mrg" -AutomationAccountName "mAutomationAccount2" -Name "complex1" -Encrypted $false -Value $jsonString
Einschränkungen
-
PowerShell 7.1 wird von PowerShell im übergeordneten Produkt nicht mehr unterstützt. Es wird empfohlen, neue Runbooks in PowerShell 7.4 für einen langfristigen Support zu erstellen und die veralteten Runbooks zu aktualisieren.
- Die internen PowerShell-Cmdlets von Azure Automation werden auf einem Linux Hybrid Runbook Worker nicht unterstützt. Sie müssen das „
automationassets“-Modul zu Beginn Ihres PowerShell-Runbooks importieren, um auf die Funktionen für freigegebene Ressourcen (Objekte) des Automation-Kontos zugreifen zu können.
- Für die PowerShell 7-Runtimeversion werden die Modulaktivitäten nicht für die importierten Module extrahiert.
- Der PSCredential-Runbookparametertyp wird in der PowerShell 7-Runtimeversion nicht unterstützt.
- PowerShell 7.x unterstützt keine Workflows. Weitere Informationen finden Sie unter PowerShell-Workflow für weitere Details.
- PowerShell 7.x unterstützt derzeit keine signierten Runbooks.
- Die Quellcodeverwaltungsintegration unterstützt PowerShell 7.1 (Vorschau) nicht. Außerdem werden PowerShell 7.1 (Vorschau)-Runbooks in der Quellcodeverwaltung im Automation-Konto als Runtime 5.1 erstellt.
- Die Verwaltung des PowerShell 7.1-Moduls über „
Get-AzAutomationModule“-Cmdlets wird nicht unterstützt.
- Das Runbook schlägt ohne Protokollablaufverfolgung fehl, wenn der Eingabewert das Zeichen „‘“ enthält.
- Das Azure-Runbook unterstützt
Start-Job mit -credential nicht.
- Azure unterstützt nicht alle PowerShell-Eingabeparameter.
Weitere Informationen
Bekannte Probleme
Runbooks, die von internen Dateipfaden abhängig sind, z. B. C:\modules, können aufgrund von Änderungen in der Dienst-Back-End-Infrastruktur fehlschlagen. Ändern Sie den Runbook-Code, um sicherzustellen, dass keine Abhängigkeiten von internen Dateipfaden vorhanden sind, und verwenden Sie Get-ChildItem, um die erforderlichen Modulinformationen abzurufen.
Beispielskript
# Get information about module "Microsoft.Graph.Authentication"
$ModuleName = "Microsoft.Graph.Authentication"
$NewPath = "C:\usr\src\PSModules\$ModuleName"
$OldPath = "C:\Modules\User\$ModuleName"
if (Test-Path -Path $NewPath -PathType Container) {
Get-ChildItem -Path $NewPath
} elseif (Test-Path -Path $OldPath -PathType Container) {
Get-ChildItem -Path $OldPath
} else {
Write-Output "Module $ModuleName not present."
}
# Getting the path to the Temp folder, if needed.
$tmp = $env:TEMP
Das Get-AzStorageAccount-Cmdlet kann aufgrund eines Fehlers fehlschlagen: Der Get-AzStorageAccount-Befehl wurde im Modul Az.Storage gefunden, aber das Modul konnte nicht geladen werden.
Das Ausführen von untergeordneten Skripts mithilfe von .\child-runbook.ps1 wird in dieser Vorschauversion nicht unterstützt.
Problemumgehung: Verwenden Sie Start-AutomationRunbook (internes Cmdlet) oder Start-AzAutomationRunbook (aus dem Az.Automation-Modul), um ein weiteres Runbook aus dem übergeordneten Runbook zu starten.
Runbookeigenschaften, die die Protokollierungsvoreinstellung definieren, werden in der PowerShell 7-Runtime nicht unterstützt.
Problemumgehung: Legen Sie die Einstellung explizit am Anfang des Runbooks wie folgt fest:
$VerbosePreference = "Continue"
$ProgressPreference = "Continue"
Vermeiden Sie das Importieren des Az.Accounts Moduls der Version 2.4.0 für die PowerShell 7-Laufzeit, da ein unerwartetes Verhalten auftreten kann, wenn diese Version in Azure Automation verwendet wird.
Möglicherweise treten Formatierungsprobleme mit Fehlerausgabestreams für den Auftrag auf, der in der PowerShell 7-Runtime ausgeführt wird.
Wenn Sie ein PowerShell 7.1-Modul importieren, das von anderen Modulen abhängig ist, können Sie feststellen, dass die Importschaltfläche auch dann grau ist, wenn PowerShell 7.1 Version des abhängigen Moduls installiert ist. Beispielsweise weist das Modul „Az PowerShell-Modul.Compute“ in der Version 4.20.0 eine Abhängigkeit vom Modul „Az.Accounts“ auf, nämlich dass > = Version 2.6.0 ist. Dieses Problem tritt auf, wenn ein entsprechendes abhängiges Modul in PowerShell 5.1 die Versionsanforderungen nicht erfüllt. Die Version 5.1 des Moduls „Az.Accounts“ war beispielsweise < Version 2.6.0.
Wenn Sie das PowerShell 7-Runbook mithilfe des Webhooks starten, wird der Webhookeingabeparameter automatisch in einen ungültigen JSON-Code konvertiert.
Es wird empfohlen, die ExchangeOnlineManagement-Modulversion 3.0.0 oder niedriger zu verwenden, da Version 3.0.0 oder höher zu Auftragsfehlern führen kann.
Wenn Sie das Modul Az.Accounts mit Version 2.12.3 oder höher importieren, stellen Sie sicher, dass Sie das Newtonsoft.Json v10-Modul explizit importieren, wenn PowerShell 7.1-Runbooks von dieser Version des Moduls abhängig sind. Die Problemumgehung für dieses Problem besteht darin, PowerShell 7.2-Runbooks zu verwenden.
Wenn Sie das New-AzAutomationVariable-Cmdlet in Az.Automation-Modul verwenden, um eine Variable vom Typ Objekt hochzuladen, funktioniert der Vorgang nicht wie erwartet.
Problemumgehung: Konvertieren Sie das Objekt mithilfe des Cmdlets ConvertTo-Json in eine JSON-Zeichenfolge, und laden Sie dann die Variable mit der JSON-Zeichenfolge als Wert hoch. Diese Problemumgehung stellt sicher, dass die Variable innerhalb der Azure Automation-Umgebung ordnungsgemäß als JSON-Zeichenfolge behandelt wird.
Beispiel: Erstellen eines PowerShell-Objekts, auf dem Informationen zu Azure-VMs gespeichert sind
# Retrieve Azure virtual machines with status information for the 'northeurope' region
$AzVM = Get-AzVM -Status | Where-Object {$_.Location -eq "northeurope"}
$VMstopatch = @($AzVM).Id
# Create an Azure Automation variable (This cmdlet will not fail, but the variable may not work as intended when used in the runbook.)
New-AzAutomationVariable -ResourceGroupName "mrg" -AutomationAccountName "mAutomationAccount2" -Name "complex1" -Encrypted $false -Value $VMstopatch
# Convert the object to a JSON string
$jsonString = $VMstopatch | ConvertTo-Json
# Create an Azure Automation variable with a JSON string value (works effectively within the automation runbook)
New-AzAutomationVariable -ResourceGroupName "mrg" -AutomationAccountName "mAutomationAccount2" -Name "complex1" -Encrypted $false -Value $jsonString
PowerShell-Workflow-Runbooks
PowerShell-Workflow-Runbooks sind Textrunbooks, die auf einem Windows PowerShell-Workflowbasieren. Sie bearbeiten den Code des Runbooks direkt mit dem Text-Editor im Azure-Portal. Sie können auch einen beliebigen Offline-Texteditor verwenden und das Runbook in Azure Automation importieren .
Hinweis
PowerShell 7.1 (Vorschau) und PowerShell 7.2 unterstützen keine Workflow-Runbooks.
Vorteile
- Implementierung der gesamten komplexen Logik mit PowerShell-Workflowcode.
- Verwendung von Prüfpunkten zum Fortsetzen des Vorgangs bei einem Fehler
- Verwendung der Parallelverarbeitung, um mehrere Aktionen gleichzeitig auszuführen
- Es können andere grafische Runbooks und PowerShell-Workflow-Runbooks als untergeordnete Runbooks einbezogen werden, um übergeordnete Workflows zu erstellen.
Begrenzungen
- PowerShell-Workflow wird in PowerShell 7 und höheren Versionen nicht unterstützt. Daher können die veralteten Runbooks nicht upgegradet werden.
- Ineffiziente Behandlung der parallelen Ausführung im Vergleich zu neueren Versionen von PowerShell 7 und höher
- PowerShell-Workflow funktioniert intern mit mehreren Prozessen. Daher sind Module, die in einem Prozess verfügbar sind, möglicherweise nicht in einem anderen verfügbar und verursachen Ausnahmen wie Befehl nicht gefunden.
- Runbooks müssen die zusätzliche Komplexität des PowerShell-Workflows verarbeiten, wie z. B. deserialisierte Objekte.
- Runbooks benötigen beim Starten länger als PowerShell-Runbooks, da sie vor der Ausführung kompiliert werden müssen.
- Ausschließlich PowerShell-Runbooks können mit dem Cmdlet „
Start-AzAutomationRunbook“ als untergeordnete Runbooks eingeschlossen werden.
- Runbooks können auf einem Linux Hybrid Runbook Worker nicht ausgeführt werden.
Python-Runbooks
Python-Runbooks werden unter Python 3.10 kompiliert. Sie können den Code des Runbooks direkt mit dem Text-Editor im Azure-Portal bearbeiten. Sie können auch einen beliebigen Offline-Text-Editor verwenden und das Runbook in Azure Automation importieren. Python 2.7 und Python 3.8 werden vom übergeordneten Produkt nicht mehr unterstützt und es wird empfohlen, Runbooks in Python 3.10-Laufzeitversion zu erstellen.
Die Laufzeitversion Python 3.10 wird sowohl für Cloud- als auch für Hybrid-Jobs in allen Regionen unterstützt.
Vorteile
Hinweis
Das Importieren eines Python-Pakets kann einige Minuten dauern.
- Verwendet die stabilen Python-Bibliotheken.
- Können in Azure oder auf Hybrid Runbook Workern ausgeführt werden.
- Skripts und Pakete aus einer beliebigen 3.x-Version funktionieren möglicherweise, wenn der Code mit mehreren Versionen kompatibel ist.
- Für Python 3.10 Hybridaufträge auf Windows-Computern können Sie eine beliebige 3.x-Version installieren, die Sie verwenden möchten.
- Für Python 3.10 Hybridaufträge auf Linux-Computern hängen wir von der Python 3-Version ab, die auf dem Computer installiert ist, um DSC OMSConfig und den Linux Hybrid Worker auszuführen. Andere Versionen sollten funktionieren, wenn zwischen den Versionen von Python 3 keine bahnbrechenden Änderungen bei Methodensignaturen oder Verträgen vorliegen.
Begrenzungen
Die Einschränkungen von Python-Runbooks sind:
- Für Python 3.10-Module werden derzeit nur die Wheel-Dateien für das cp310-Linux-Betriebssystem unterstützt.
Weitere Informationen
- Die Integration der Quellcodeverwaltung wird nicht unterstützt.
- Benutzerdefinierte Pakete für Python 3.10 werden nur während der Auftragslaufzeit überprüft. Es wird erwartet, dass der Auftrag fehlschlägt, wenn das Paket in der Runtime nicht kompatibel ist oder wenn erforderliche Abhängigkeiten von Paketen nicht in das Automation-Konto importiert wurden.
- Derzeit werden Python 3.10-Runbooks nur über das Azure-Portal und die Rest-API unterstützt.
- Python 3.8 wird nicht mehr von übergeordnetem Produkt Python unterstützt. Es wird empfohlen, neue Runbooks in den unterstützten Versionen zu erstellen und die veralteten Runbooks zu aktualisieren.
- Sie sollten mit Python-Skripting vertraut sein.
- Die Integration der Quellcodeverwaltung wird nicht unterstützt.
- Verwenden Sie für Python 3.8-Module Wheel-Dateien für cp38-amd64.
- Um Bibliotheken von Drittanbietern zu verwenden, müssen Sie die Pakete importieren und ins Automatisierungskonto integrieren.
- Das Verwenden des Cmdlets Start-AutomationRunbook in PowerShell oder einem PowerShell-Workflow zum Starten eines Python 3.8-Runbooks funktioniert nicht. Sie können das Cmdlet Start-AzAutomationRunbook aus dem Modul Az.Automation oder das Cmdlet Start-AzureRmAutomationRunbook aus dem Modul AzureRm.Automation verwenden, um diese Einschränkung zu umgehen.
- Azure Automation unterstützt sys.stderr nicht.
- Da das Python-Paket automationassets auf pypi.org nicht verfügbar ist, kann es nicht auf einen Windows-Computer importiert werden.
-
Python 2.7 wird von Python im übergeordneten Produkt nicht mehr unterstützt. Es wird empfohlen, neue Runbooks in den unterstützten Versionen zu erstellen und die veralteten Runbooks zu aktualisieren.
- Sie sollten mit Python-Skripting vertraut sein.
- Verwenden Sie für Python 2.7.12-Module Wheel-Dateien für cp27-amd6.
- Um Bibliotheken von Drittanbietern zu verwenden, müssen Sie die Pakete importieren und ins Automatisierungskonto integrieren.
- Azure Automation unterstützt sys.stderr nicht.
- Da das Python-Paket automationassets auf pypi.org nicht verfügbar ist, kann es nicht auf einen Windows-Computer importiert werden.
Hinweis
Die Verwendung eines Webhooks zum Starten eines Python-Runbook wird nicht unterstützt.
Mehrere Python-Versionen
Dies gilt für Windows Hybrid Worker. Ein Windows Runbook Worker sucht beim Ausführen eines Python 2-Runbooks zuerst nach der Umgebungsvariable PYTHON_2_PATH und überprüft, ob sie auf eine gültige ausführbare Datei verweist. Wenn der Installationsordner beispielsweise C:\Python2 lautet, wird überprüft, ob C:\Python2\python.exe ein gültiger Pfad ist. Wenn er nicht gefunden wird, sucht der Worker nach der Umgebungsvariablen „PATH“, um eine ähnliche Überprüfung durchzuführen.
Für Python 3 sucht er zuerst nach der Umgebungsvariable PYTHON_3_PATH und greift dann auf die Umgebungsvariable PATH zurück.
Wenn Sie nur eine Version von Python verwenden, können Sie der Variable den Installationspfad PATH hinzufügen. Wenn Sie beide Versionen auf dem Runbook Worker verwenden möchten, legen Sie für PYTHON_2_PATH und PYTHON_3_PATH den Speicherort des Moduls für diese Versionen fest.
Bekannte Probleme
Bei Cloudaufträgen schlagen Python 3.8-Aufträge manchmal mit der Ausnahmemeldung invalid interpreter executable path fehl. Diese Ausnahme wird möglicherweise angezeigt, wenn der Auftrag verzögert ist, wenn der Start länger als 10 Minuten dauert oder wenn Start-AutomationRunbook verwendet wird, um Python 3.8-Runbooks zu starten. Wenn der Auftrag verzögert wurde, sollte ein Neustart des Runbooks ausreichen.
Grafische Runbooks
Sie können grafische Runbooks und grafische PowerShell-Workflow-Runbooks im grafischen Editor im Azure-Portal erstellen und bearbeiten. Es ist jedoch nicht möglich, diesen Runbooktyp mit einem anderen Tool zu erstellen oder zu bearbeiten. Hauptfunktionen von grafischen Runbooks:
- Werden in Dateien in Ihrem Automation-Konto exportiert und dann in ein anderes Automation-Konto importiert.
- Generieren PowerShell-Code
- Werden während des Imports in grafische PowerShell-Workflow-Runbooks konvertiert und umgekehrt.
Vorteile
- Verwenden Sie ein visuelles Autorenmodell zum Einfügen, Verlinken und Konfigurieren.
- Schwerpunkt auf Datenfluss im Prozess
- Visuelle Darstellung von Verwaltungsprozessen.
- Schließen weitere Runbooks als untergeordnete Runbooks ein, um übergeordnete Workflows zu erstellen.
- Fördern modulare Programmierung
Begrenzungen
- Können nicht außerhalb des Azure-Portals erstellt oder bearbeitet werden
- Erfordern möglicherweise Aktivität mit PowerShell-Code, um komplexe Logik auszuführen
- Kann nicht in eines der Textformate konvertiert werden, und ein Textrunbook kann auch nicht in ein grafisches Format konvertiert werden.
- Bieten keine Möglichkeit zum Anzeigen oder direkten Bearbeiten des vom grafischen Workflow erstellten PowerShell-Codes. Sie können den erstellten Code in allen Codeaktivitäten anzeigen.
- Können keine Runbooks auf einem Hybrid Runbook Worker unter Linux ausführen. Weitere Informationen finden Sie unter Automatisieren von Ressourcen im Rechenzentrum oder in der Cloud mit Hybrid Runbook Worker.
- Grafische Runbooks können nicht digital signiert werden.
Nächste Schritte