Funkcja automatyzacji procesów usługi Azure Automation obsługuje kilka typów runbooków, jak określono w poniższej tabeli.
| Typ |
Opis |
PowerShell (zalecane) |
Tekstowy Runbook oparty na skryptach Windows PowerShell. Obecnie obsługiwane wersje to PowerShell 7.6, PowerShell 7.4 oraz PowerShell 5.1. Ponieważ PowerShell 7.1 i PowerShell 7.2 nie są już wspierane przez produkt nadrzędny PowerShell, twórz podręczniki runbooków dla długoterminowo wspieranych wersji, takich jak PowerShell 7.6 lub PowerShell 7.4. |
|
Przepływ pracy programu PowerShell |
Tekstowa książka robocza oparta na skryptach programu Windows PowerShell Workflow. |
Pyton (zalecane) |
Tekstowy podręcznik operacyjny oparty na skryptach języka Python. Obecnie obsługiwana wersja to Python 3.10. Ponieważ języki Python 2.7 i Python 3.8 nie są już obsługiwane przez produkt nadrzędny Python, zalecamy utworzenie elementów Runbook w języku Python 3.10. |
|
Graficzny |
Graficzny runbook oparty na platformie Windows PowerShell, utworzony i edytowany całkowicie w edytorze graficznym w Azure Portal. |
|
Graficzny przepływ pracy programu PowerShell |
Graficzny runbook oparty na przepływie pracy Windows PowerShell i utworzony oraz edytowany całkowicie w edytorze graficznym w Portalu Azure. |
Aby dowiedzieć się więcej o środowisku automatyzacji procesów, przeczytaj wykonywanie Runbooka w usłudze Azure Automation.
Uwaga
Usługa Azure Automation będzie postępować zgodnie z cyklem wsparcia dla wersji programu PowerShell i języka Python zgodnie z osiami czasu opublikowanymi odpowiednio przez produkty nadrzędne, program PowerShell i język Python. Zalecamy używanie runbooków z obsługiwanymi wersjami językowymi.
Podczas określania, jakiego typu użyć dla danego runbooka, należy wziąć pod uwagę następujące kwestie:
- Nie można konwertować elementów Runbook z graficznego na typ tekstu ani w inny sposób.
- Istnieją ograniczenia dotyczące używania runbooków różnych typów jako podrzędnych runbooków. Aby uzyskać więcej informacji, zobacz Runbooki dla dzieci w usłudze Azure Automation.
Runbooki programu PowerShell
Runbooki PowerShell są oparte na Windows PowerShell. Kod elementu Runbook można edytować bezpośrednio przy użyciu edytora tekstów w witrynie Azure Portal. Możesz również użyć dowolnego edytora tekstu w trybie offline i zaimportować element Runbook do usługi Azure Automation.
Wersja programu PowerShell jest określana przez określoną wersję środowiska uruchomieniowego .
Ta sama piaskownica platformy Azure i hybrydowy proces roboczy elementu Runbook mogą wykonywać wiele elementów Runbook programu PowerShell przeznaczonych dla różnych wersji środowiska uruchomieniowego obok siebie. Wersje wykonawcze PowerShell 7.6 i PowerShell 7.4 są obsługiwane zarówno dla zadań chmurowych, jak i hybrydowych we wszystkich regionach.
Uwaga
- W momencie wykonywania elementu Runbook, jeśli wybierzesz wersję środowiska uruchomieniowego jako 7.4, używane są moduły programu PowerShell przeznaczone dla wersji środowiska uruchomieniowego 7.4 i jeśli wybierzesz wersję środowiska uruchomieniowego5.1, używane są moduły programu PowerShell przeznaczone dla wersji środowiska uruchomieniowego 5.1.
Upewnij się, że wybrano odpowiednią wersję środowiska uruchomieniowego dla modułów.
Na przykład: Jeśli wykonujesz runbook dla scenariusza automatyzacji SharePoint w środowisku uruchomieniowym w wersji 7.4, zaimportuj moduł w środowisku uruchomieniowym w wersji 7.4; jeśli wykonujesz runbook dla scenariusza automatyzacji SharePoint w środowisku uruchomieniowym w wersji 5.1, zaimportuj moduł w środowisku uruchomieniowym w wersji 5.1.
Zalety
- Zaimplementuj całą złożoną logikę przy użyciu kodu programu PowerShell bez innych złożoności przepływu pracy programu PowerShell.
- Uruchom szybciej niż elementy Runbook przepływu pracy programu PowerShell, ponieważ nie trzeba ich kompilować przed uruchomieniem.
- Uruchamiaj na platformie Azure oraz na hybrydowych pracownikach Runbook zarówno dla systemów Windows, jak i Linux.
Ograniczenia i znane problemy
Poniżej przedstawiono bieżące ograniczenia i znane problemy z elementami Runbook programu PowerShell:
Ograniczenia PowerShell 7.6 jest dostępny w środowisku uruchomieniowym.
W wersji wykonawczej PowerShell 7.6 działania modułów nie są wyodrębniane dla importowanych modułów.
Program PowerShell 7.x nie obsługuje przepływów pracy. Aby uzyskać więcej informacji, zobacz Przepływ pracy programu PowerShell.
Program PowerShell 7.x obecnie nie obsługuje podpisanych runbooków.
Integracja z Source Control nie obsługuje PowerShell 7.6. Ponadto podręczniki runbooków PowerShell 7.6 w zarządzaniu wersyjnym są tworzone na koncie Automation jako Runtime 5.1.
Moduł Az 15.1.0 jest zainstalowany domyślnie. Pełna lista modułów składowych wybranej wersji modułu Az jest wyświetlana po ponownym skonfigurowaniu wersji modułu Az przy użyciu portalu Azure lub interfejsu API.
Importowane moduły PowerShell 7.6 są walidowane podczas wykonywania zadania. Upewnij się, że wszystkie zależności dla wybranego modułu są również importowane do pomyślnego wykonania zadania.
Azure Automation runbooki nie obsługują Start-Job z -Credential.
Platforma Azure nie obsługuje wszystkich parametrów wejściowych programu PowerShell.
Dowiedz się więcej.
Znane problemy
Runbooki zależne od wewnętrznych ścieżek plików, takich jak C:\modules, mogą ulec awarii z powodu zmian w infrastrukturze zaplecza usługi. Zmień kod elementu Runbook, aby upewnić się, że nie ma zależności od ścieżek plików wewnętrznych i użyj polecenia Get-ChildItem , aby uzyskać wymagane informacje o module.
Get-AzStorageAccountPolecenie cmdlet może zakończyć się niepowodzeniem z powodu błędu: Get-AzStorageAccount polecenie zostało znalezione w module Az.Storage, ale nie można załadować modułu.
Wykonywanie skryptów dzieci przy użyciu .\child-runbook.ps1 nie jest obsługiwane.
Obejście: użyj Start-AutomationRunbook (wewnętrznego polecenia cmdlet) lub Start-AzAutomationRunbook (z modułu Az.Automation), aby uruchomić inny Runbook z nadrzędnego Runbooka.
W przypadku korzystania z modułu ExchangeOnlineManagement w wersji 3.0.0 lub nowszej można napotkać błędy. Aby rozwiązać ten problem, upewnij się, że jawnie załadujesz moduły PowerShellGet i PackageManagement.
Jeśli używasz New-AzAutomationVariable polecenia cmdlet w module Az.Automation do przekazania zmiennej typu object, operacja nie działa zgodnie z oczekiwaniami.
Obejście: Przekonwertuj obiekt na ciąg JSON przy użyciu polecenia cmdlet ConvertTo-Json, a następnie przekaż zmienną z ciągiem JSON jako jego wartością. To obejście zapewnia prawidłową obsługę zmiennej w środowisku usługi Azure Automation jako ciąg JSON.
Przykład – Stwórz obiekt PowerShell, który przechowuje informacje o maszynach wirtualnych Azure
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
Ograniczenia
Uwaga
Wersja wykonawcza PowerShell 7.4 obsługuje zarówno zadania chmurowe, jak i hybrydowe we wszystkich regionach.
- Program PowerShell 7.4 jest dostępny tylko w środowisku środowiska uruchomieniowego.
- W przypadku wersji środowiska uruchomieniowego programu PowerShell 7.4 działania modułu nie są wyodrębniane dla zaimportowanych modułów. Użyj rozszerzenia Azure Automation dla programu VS Code, aby uprościć doświadczenie tworzenia runbooków.
- Program PowerShell 7.x nie obsługuje przepływów pracy. Aby uzyskać więcej informacji, zobacz Przepływ pracy programu PowerShell, aby uzyskać więcej szczegółów.
- Program PowerShell 7.x obecnie nie obsługuje podpisanych runbooków.
- Integracja kontroli źródła nie obsługuje programu PowerShell 7.4. Ponadto runbooki PowerShell 7.4 w ramach kontroli źródła są tworzone na koncie usługi Automation jako środowisko uruchomieniowe wersji 5.1.
- Moduł Az 12.3.0 jest instalowany domyślnie. Pełna lista modułów składowych wybranej wersji modułu Az jest wyświetlana po ponownym skonfigurowaniu wersji modułu Az przy użyciu portalu Azure lub interfejsu API.
- Zaimportowany moduł programu PowerShell 7.4 zostanie zweryfikowany podczas wykonywania zadania. Upewnij się, że wszystkie zależności dla wybranego modułu są również importowane do pomyślnego wykonania zadania.
- Runbook platformy Azure nie obsługuje
Start-Job z -credential.
- Platforma Azure nie obsługuje wszystkich parametrów wejściowych programu PowerShell.
Dowiedz się więcej.
Znane problemy
Runbooki zależne od wewnętrznych ścieżek plików, takich jak C:\modules, mogą ulec awarii z powodu zmian w infrastrukturze zaplecza usługi. Zmień kod elementu Runbook, aby upewnić się, że nie ma zależności od ścieżek plików wewnętrznych i użyj polecenia Get-ChildItem , aby uzyskać wymagane informacje o module.
Get-AzStorageAccountPolecenie cmdlet może zakończyć się niepowodzeniem z powodu błędu: Get-AzStorageAccount polecenie zostało znalezione w module Az.Storage, ale nie można załadować modułu.
Wykonywanie skryptów dzieci przy użyciu .\child-runbook.ps1 nie jest obsługiwane.
Obejście: użyj Start-AutomationRunbook (wewnętrznego polecenia cmdlet) lub Start-AzAutomationRunbook (z modułu Az.Automation), aby uruchomić inny Runbook z nadrzędnego Runbooka.
W przypadku korzystania z modułu ExchangeOnlineManagement w wersji 3.0.0 lub nowszej można napotkać błędy. Aby rozwiązać ten problem, upewnij się, że jawnie załadujesz moduły PowerShellGet i PackageManagement.
Jeśli używasz New-AzAutomationVariable polecenia cmdlet w module Az.Automation do przekazania zmiennej typu object, operacja nie działa zgodnie z oczekiwaniami.
Obejście: Przekonwertuj obiekt na ciąg JSON przy użyciu polecenia cmdlet ConvertTo-Json, a następnie przekaż zmienną z ciągiem JSON jako jego wartością. To obejście zapewnia prawidłową obsługę zmiennej w środowisku usługi Azure Automation jako ciąg JSON.
Przykład — tworzenie obiektu programu PowerShell, który zawiera informacje dotyczące maszyn wirtualnych platformy Azure
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
Ograniczenia
Uwaga
Wersja programu PowerShell 7.2 nie jest już obsługiwana przez produkt nadrzędny programu PowerShell.
- W przypadku wersji środowiska uruchomieniowego programu PowerShell 7.2 działania modułu nie są wyodrębniane dla zaimportowanych modułów.
- Program PowerShell 7.x nie obsługuje przepływów pracy. Aby uzyskać więcej informacji, zobacz Przepływ pracy programu PowerShell, aby uzyskać więcej szczegółów.
- Program PowerShell 7.x obecnie nie obsługuje podpisanych runbooków.
- Integracja kontroli źródła nie obsługuje programu PowerShell 7.2. Ponadto runbooki programu PowerShell 7.2 w kontroli wersji są tworzone na koncie usługi Automation jako Runtime 5.1.
- Moduł Az 8.3.0 jest instalowany domyślnie. Pełna lista modułów składowych wybranej wersji modułu Az jest wyświetlana po ponownym skonfigurowaniu wersji modułu Az przy użyciu portalu Azure lub interfejsu API.
- Zaimportowany moduł programu PowerShell 7.2 zostanie zweryfikowany podczas wykonywania zadania. Upewnij się, że wszystkie zależności dla wybranego modułu są również importowane do pomyślnego wykonania zadania.
- Runbook platformy Azure nie obsługuje
Start-Job z -credential.
- Platforma Azure nie obsługuje wszystkich parametrów wejściowych programu PowerShell.
Dowiedz się więcej.
Znane problemy
Runbooki zależne od wewnętrznych ścieżek plików, takich jak C:\modules, mogą ulec awarii z powodu zmian w infrastrukturze zaplecza usługi. Zmień kod elementu Runbook, aby upewnić się, że nie ma zależności od ścieżek plików wewnętrznych i użyj polecenia Get-ChildItem , aby uzyskać wymagane informacje o module.
Get-AzStorageAccountPolecenie cmdlet może zakończyć się niepowodzeniem z powodu błędu: Get-AzStorageAccount polecenie zostało znalezione w module Az.Storage, ale nie można załadować modułu.
Wykonywanie skryptów dzieci przy użyciu .\child-runbook.ps1 nie jest obsługiwane.
Obejście: użyj Start-AutomationRunbook (wewnętrznego polecenia cmdlet) lub Start-AzAutomationRunbook (z modułu Az.Automation), aby uruchomić inny Runbook z nadrzędnego Runbooka.
W przypadku korzystania z modułu ExchangeOnlineManagement w wersji 3.0.0 lub nowszej można napotkać błędy. Aby rozwiązać ten problem, upewnij się, że jawnie załadujesz moduły PowerShellGet i PackageManagement.
Jeśli używasz New-AzAutomationVariable polecenia cmdlet w module Az.Automation do przekazania zmiennej typu object, operacja nie działa zgodnie z oczekiwaniami.
Obejście: Przekonwertuj obiekt na ciąg JSON przy użyciu polecenia cmdlet ConvertTo-Json, a następnie przekaż zmienną z ciągiem JSON jako jego wartością. To obejście zapewnia prawidłową obsługę zmiennej w środowisku usługi Azure Automation jako ciąg JSON.
Przykład — tworzenie obiektu programu PowerShell, który zawiera informacje dotyczące maszyn wirtualnych platformy Azure
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
Ograniczenia
- Runbooki nie mogą używać przetwarzania równoległego do wykonywania wielu akcji jednocześnie.
- Elementy Runbook nie mogą używać punktów kontrolnych do wznowienia elementu Runbook, jeśli wystąpi błąd.
- Można uwzględnić tylko elementy Runbook programu PowerShell, elementy Runbook przepływu pracy programu PowerShell i graficzne elementy Runbook jako podrzędne elementy Runbook przy użyciu polecenia cmdlet Start-AzAutomationRunbook , które tworzy nowe zadanie.
- Runbooki nie mogą używać instrukcji #Requires programu PowerShell, ponieważ nie jest ona obsługiwana w piaskownicy Azure ani na Hybrydowych Runbook Workerach i może spowodować niepowodzenie zadania.
- Runbook platformy Azure nie obsługuje
Start-Job z -credential.
- Platforma Azure nie obsługuje wszystkich parametrów wejściowych programu PowerShell.
Dowiedz się więcej.
Znane problemy
Runbooki zależne od wewnętrznych ścieżek plików, takich jak C:\modules, mogą ulec awarii z powodu zmian w infrastrukturze zaplecza usługi. Zmień kod elementu Runbook, aby upewnić się, że nie ma zależności od ścieżek plików wewnętrznych i użyj polecenia Get-ChildItem , aby uzyskać wymagane informacje o module.
Przykładowy skrypt
# 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
Get-AzStorageAccountPolecenie cmdlet może zakończyć się niepowodzeniem z powodu błędu: Get-AzStorageAccount polecenie zostało znalezione w module Az.Storage, ale nie można załadować modułu.
Runbooki programu PowerShell nie mogą pobrać niezaszyfrowanego zasobu zmiennej z wartością null.
Runbooki programu PowerShell nie mogą pobrać zasobu zmiennej z *~* w nazwie.
Operacja Get-Process w pętli w runbooku PowerShell może zawiesić się po około 80 powtórzeniach.
Element Runbook programu PowerShell może zakończyć się niepowodzeniem, jeśli próbuje zapisać dużą ilość danych do strumienia wyjściowego jednocześnie. Zazwyczaj można obejść ten problem, podając do danych wyjściowych elementu Runbook tylko informacje potrzebne do pracy z dużymi obiektami. Na przykład zamiast używać Get-Process polecenia bez ograniczeń, możesz mieć dane wyjściowe polecenia cmdlet tylko wymagane parametry, jak w pliku Get-Process | Select ProcessName, CPU.
W przypadku korzystania z modułu ExchangeOnlineManagement w wersji 3.0.0 lub nowszej mogą wystąpić błędy. Aby rozwiązać ten problem, upewnij się, że jawnie przekażesz moduły PowerShellGet i PackageManagement .
Jeśli importujesz moduł Az.Accounts z wersją 2.12.3 lub nowszą, upewnij się, że moduł Newtonsoft.Json v10 jawnie zaimportował, jeśli elementy Runbook programu PowerShell 5.1 mają zależność od tej wersji modułu. Obejściem tego problemu jest użycie elementów Runbook programu PowerShell 7.2.
Jeśli używasz New-AzAutomationVariable polecenia cmdlet w module Az.Automation do przekazania zmiennej typu object, operacja nie działa zgodnie z oczekiwaniami.
Obejście: Przekonwertuj obiekt na ciąg JSON przy użyciu polecenia cmdlet ConvertTo-Json, a następnie przekaż zmienną z ciągiem JSON jako jego wartością. To obejście zapewnia prawidłową obsługę zmiennej w środowisku usługi Azure Automation jako ciąg JSON.
Przykład — tworzenie obiektu programu PowerShell, który zawiera informacje dotyczące maszyn wirtualnych platformy Azure
# 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
Ograniczenia
-
PowerShell 7.1 nie jest już obsługiwany przez nadrzędny produkt PowerShell. Zalecamy utworzenie nowych elementów Runbook w programie PowerShell 7.4 w celu zapewnienia długoterminowej obsługi i zaktualizowania nieaktualnych elementów Runbook.
- Wewnętrzne polecenia cmdlet programu PowerShell usługi Azure Automation nie są obsługiwane na hybrydycznym pracowniku uruchamiania Runbook systemu Linux. Aby uzyskać dostęp do funkcji udostępnionych zasobów konta usługi Automation, należy zaimportować moduł
automationassets na początku swojego runbooka programu PowerShell.
- W przypadku wersji środowiska uruchomieniowego programu PowerShell 7 działania modułu nie są wyodrębniane dla zaimportowanych modułów.
-
Typ parametru elementu Runbook programu PSCredential nie jest obsługiwany w wersji środowiska uruchomieniowego programu PowerShell 7.
- Program PowerShell 7.x nie obsługuje przepływów pracy. Aby uzyskać więcej informacji, zobacz PowerShell Workflow (Przepływ pracy programu PowerShell), aby uzyskać więcej szczegółów.
- Program PowerShell 7.x obecnie nie obsługuje podpisanych runbooków.
- Integracja kontroli źródła nie obsługuje programu PowerShell 7.1 (wersja zapoznawcza) Ponadto elementy Runbook programu PowerShell 7.1 (wersja zapoznawcza) w kontroli źródła są tworzone na koncie usługi Automation jako środowisko uruchomieniowe 5.1.
- Zarządzanie modułami programu PowerShell 7.1 nie jest obsługiwane za pomocą poleceń cmdlet
Get-AzAutomationModule.
- Element Runbook kończy się niepowodzeniem bez śladu dziennika, jeśli wartość wejściowa zawiera znak ".
- Runbook platformy Azure nie obsługuje
Start-Job z -credential.
- Platforma Azure nie obsługuje wszystkich parametrów wejściowych programu PowerShell.
Dowiedz się więcej.
Znane problemy
Runbooki zależne od wewnętrznych ścieżek plików, takich jak C:\modules, mogą ulec awarii z powodu zmian w infrastrukturze zaplecza usługi. Zmień kod elementu Runbook, aby upewnić się, że nie ma zależności od ścieżek plików wewnętrznych i użyj polecenia Get-ChildItem , aby uzyskać wymagane informacje o module.
Przykładowy skrypt
# 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
Get-AzStorageAccountPolecenie cmdlet może zakończyć się niepowodzeniem z powodu błędu: Get-AzStorageAccount polecenie zostało znalezione w module Az.Storage, ale nie można załadować modułu.
Wykonywanie skryptów podrzędnych przy użyciu programu .\child-runbook.ps1 nie jest obsługiwane w tej wersji zapoznawczej.
Obejście: użyj Start-AutomationRunbook (wewnętrznego polecenia cmdlet) lub Start-AzAutomationRunbook (z Az.Automation modułu), aby uruchomić inny element Runbook z nadrzędnego elementu Runbook.
Właściwości elementu Runbook definiujące preferencje rejestrowania nie są obsługiwane w środowisku uruchomieniowym programu PowerShell 7.
Obejście: Jawne ustawienie preferencji na początku elementu Runbook w następujący sposób:
$VerbosePreference = "Continue"
$ProgressPreference = "Continue"
Unikaj importowania Az.Accounts modułu do wersji 2.4.0 dla środowiska uruchomieniowego programu PowerShell 7, ponieważ może wystąpić nieoczekiwane zachowanie przy użyciu tej wersji w usłudze Azure Automation.
Mogą wystąpić problemy z formatowaniem strumieni wyjściowych błędów dla zadania uruchomionego w środowisku uruchomieniowym programu PowerShell 7.
Podczas importowania modułu programu PowerShell 7.1 zależnego od innych modułów może się okazać, że przycisk importu jest szary, nawet jeśli jest zainstalowana wersja programu PowerShell 7.1 modułu zależnego. Na przykład moduł Az programu PowerShell. Środowisko obliczeniowe w wersji 4.20.0 ma zależność od modułu Az.Accounts = >2.6.0. Ten problem występuje, gdy równoważny moduł zależny w programie PowerShell 5.1 nie spełnia wymagań dotyczących wersji. Na przykład moduł Az.Accounts w wersji 5.1 był < 2.6.0.
Po uruchomieniu runbooka PowerShell 7 za pomocą webhooka, jego parametr wejściowy jest automatycznie konwertowany na nieprawidłowy kod JSON.
Zalecamy użycie modułu ExchangeOnlineManagement w wersji 3.0.0 lub starszej, ponieważ wersja: 3.0.0 lub nowsza może prowadzić do błędów zadań.
W przypadku importowania modułu Az.Accounts w wersji 2.12.3 lub nowszej, upewnij się, że jawnie importujesz moduł Newtonsoft.Json w wersji v10, jeśli runbooki programu PowerShell 7.1 mają zależność od tej wersji modułu. Obejściem tego problemu jest użycie elementów Runbook programu PowerShell 7.2.
Jeśli używasz New-AzAutomationVariable polecenia cmdlet w module Az.Automation do przekazania zmiennej typu object, operacja nie działa zgodnie z oczekiwaniami.
Obejście: Przekonwertuj obiekt na ciąg JSON przy użyciu polecenia cmdlet ConvertTo-Json, a następnie przekaż zmienną z ciągiem JSON jako jego wartością. To obejście zapewnia prawidłową obsługę zmiennej w środowisku usługi Azure Automation jako ciąg JSON.
Przykład — tworzenie obiektu programu PowerShell, który zawiera informacje dotyczące maszyn wirtualnych platformy Azure
# 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
Runbooki przepływu pracy PowerShell
Elementy Runbook przepływu pracy programu PowerShell to elementy runbook tekstowe oparte na przepływie pracy programu Windows PowerShell. Kod elementu Runbook można edytować bezpośrednio przy użyciu edytora tekstów w witrynie Azure Portal. Możesz również użyć dowolnego edytora tekstu w trybie offline i zaimportować element Runbook do usługi Azure Automation.
Uwaga
PowerShell 7.1 (wersja zapoznawcza) i 7.2 nie obsługują runbooków przepływu pracy.
Zalety
- Zaimplementuj całą złożoną logikę za pomocą kodu przepływu pracy programu PowerShell.
- Użyj punktów kontrolnych , aby wznowić operację, jeśli wystąpi błąd.
- Użyj przetwarzania równoległego do równoległego wykonywania wielu działań.
- Może zawierać inne graficzne runbooki oraz runbooki przepływu pracy PowerShell jako podrzędne runbooki w celu tworzenia zaawansowanych przepływów pracy.
Ograniczenia
- Przepływ pracy programu PowerShell nie jest obsługiwany w wersjach programu PowerShell 7 lub nowszych. W związku z tym przestarzałe runbooki nie mogą być zaktualizowane.
- Nieefektywna obsługa równoległego wykonywania w porównaniu z nowszymi wersjami programu PowerShell 7 lub nowszych.
- Przepływ pracy programu PowerShell działa wewnętrznie przy użyciu wielu procesów. W związku z tym moduły dostępne w jednym procesie mogą nie być dostępne w innym i powodować wyjątki, takie jak nie znaleziono polecenia.
- Elementy Runbook muszą zajmować się dodatkową złożonością przepływu pracy programu PowerShell, na przykład zdeserializowanymi obiektami.
- Uruchamianie elementów Runbook trwa dłużej niż w przypadku elementów Runbook programu PowerShell, ponieważ należy je skompilować przed uruchomieniem.
- Elementy Runbook programu PowerShell można dołączać tylko jako podrzędne elementy Runbook przy użyciu
Start-AzAutomationRunbook polecenia cmdlet .
- Runbooki nie mogą działać na hybrydowym pracowniku Runbook systemu Linux.
Elementy Runbook języka Python
Runbooki Pythona kompilują się w Pythonie 3.10. Kod elementu Runbook można edytować bezpośrednio przy użyciu edytora tekstów w witrynie Azure Portal. Możesz również użyć edytora tekstów w trybie offline i zaimportować element Runbook do usługi Azure Automation. Python 2.7 i Python 3.8 nie są już obsługiwane przez produkt macierzysty, i zaleca się tworzenie runbooków w wersji środowiska uruchomieniowego Python 3.10.
Wersja Python 3.10 w runtime jest obsługiwana zarówno dla zadań chmurowych, jak i hybrydowych we wszystkich regionach.
Zalety
Uwaga
Importowanie pakietu języka Python może potrwać kilka minut.
- Używa niezawodnych bibliotek języka Python.
- Można uruchamiać w Azure lub na Hybrydowych Pracownikach Runbook.
- Skrypty i pakiety z dowolnej wersji 3.x mogą działać, jeśli kod jest zgodny w różnych wersjach.
- W przypadku zadań hybrydowych języka Python 3.10 na maszynach z systemem Windows możesz zainstalować dowolną wersję 3.x, której chcesz użyć.
- W przypadku zadań hybrydowych języka Python 3.10 na maszynach z systemem Linux polegamy na wersji Python 3 zainstalowanej na maszynie do uruchamiania DSC OMSConfig oraz Hybrydowego Workera Linuksa. Różne wersje powinny działać, jeśli nie ma żadnych zmian powodujących problemy z kompatybilnością w podpisach metod lub kontraktach między kolejnymi wersjami języka Python 3.
Ograniczenia
Ograniczenia runbooków Python to:
- Obecnie w przypadku modułów języka Python 3.10 obsługiwane są tylko pliki wheel przeznaczone dla systemu operacyjnego Linux na platformie cp310.
Dowiedz się więcej
- Integracja kontroli źródła nie jest obsługiwana.
- Pakiety niestandardowe dla języka Python 3.10 są weryfikowane tylko podczas wykonywania zadania. Zadanie ma zakończyć się niepowodzeniem, jeśli pakiet nie jest zgodny ze środowiskiem uruchomieniowym lub jeśli wymagane zależności pakietów nie są importowane na konto automatyzacji.
- Obecnie runbooki Pythona 3.10 są obsługiwane tylko z poziomu portalu Azure oraz API REST.
- Język Python 3.8 nie jest już obsługiwany przez produkt nadrzędny Python. Zalecamy utworzenie nowych runbooków w wersjach obsługiwanych i aktualizację przestarzałych runbooków.
- Musisz zapoznać się ze skryptami języka Python.
- Integracja kontroli źródła nie jest obsługiwana.
- W przypadku modułów języka Python 3.8 użyj plików wheel przeznaczonych dla cp38-amd64.
- Aby korzystać z bibliotek innych firm, należy zaimportować pakiety na konto usługi Automation.
- Korzystanie z polecenia Start-AutomationRunbook cmdlet w PowerShell/Workflow PowerShell do uruchomienia runbooka Python 3.8 nie działa. Aby obejść to ograniczenie, możesz użyć polecenia cmdlet Start-AzAutomationRunbook z modułu Az.Automation lub polecenia cmdlet Start-AzureRmAutomationRunbook z modułu AzureRm.Automation.
- Usługa Azure Automation nie obsługuje narzędzia sys.stderr.
- Pakiet zasobów automatyzacji języka Python nie jest dostępny w pypi.org, więc nie jest dostępny do importowania na maszynę z systemem Windows.
-
Język Python 2.7 nie jest już obsługiwany przez produkt nadrzędny Python. Zalecamy utworzenie nowych runbooków w obsługiwanych wersjach i zaktualizowanie nieaktualnych runbooków.
- Musisz zapoznać się ze skryptami języka Python.
- W przypadku modułów języka Python 2.7.12 użyj plików wheel cp27-amd6.
- Aby korzystać z bibliotek innych firm, należy zaimportować pakiety na konto usługi Automation.
- Usługa Azure Automation nie obsługuje narzędzia sys.stderr.
- Pakiet zasobów automatyzacji języka Python nie jest dostępny w pypi.org, więc nie jest dostępny do importowania na maszynę z systemem Windows.
Uwaga
Używanie webhooka do uruchamiania runbooka w języku Python nie jest obsługiwane.
Wiele wersji języka Python
Dotyczy pracowników hybrydowych korzystających z systemu Windows. W przypadku pracy Windows Runbook Worker, podczas uruchamiania Runbook w języku Python 2, najpierw wyszukuje zmienną środowiskową PYTHON_2_PATH i weryfikuje, czy wskazuje na prawidłowy plik wykonywalny. Jeśli na przykład folder instalacyjny to C:\Python2, sprawdź, czy C:\Python2\python.exe jest prawidłową ścieżką. Jeśli nie zostanie znaleziona, szuka zmiennej środowiskowej PATH w celu wykonania podobnego sprawdzenia.
W przypadku języka Python 3 najpierw szuka zmiennej PYTHON_3_PATH env, a następnie wraca do zmiennej środowiskowej PATH .
W przypadku używania tylko jednej wersji języka Python można dodać ścieżkę instalacji do zmiennej PATH . Jeśli chcesz użyć obu wersji na Runbook Worker, ustaw PYTHON_2_PATH i PYTHON_3_PATH na lokalizację modułu odpowiedniego dla tych wersji.
Znane problemy
W przypadku zadań w chmurze zadania języka Python 3.8 czasami kończą się niepowodzeniem z komunikatem o wyjątku invalid interpreter executable path. Ten wyjątek może wystąpić, jeśli zadanie jest opóźnione, począwszy od ponad 10 minut lub przy użyciu elementu Start-AutomationRunbook w celu uruchomienia elementów Runbook języka Python 3.8. Jeśli zadanie zostanie opóźnione, ponowne uruchomienie elementu Runbook powinno być wystarczające.
Graficzne elementy runbook
Elementy Runbook przepływu pracy programu PowerShell można tworzyć i edytować przy użyciu edytora graficznego w witrynie Azure Portal. Nie można jednak utworzyć ani edytować tego typu elementu Runbook za pomocą innego narzędzia. Główne funkcje graficznych runbooków:
- Wyeksportowane do plików na koncie usługi Automation, a następnie zaimportowane do innego konta usługi Automation.
- Generowanie kodu programu PowerShell.
- Przekonwertowane na graficzne runbooki przepływu pracy PowerShell lub z nich podczas importu.
Zalety
- Użyj wizualnego modelu tworzenia, wstawiania i konfigurowania linków.
- Skoncentruj się na tym, jak dane przepływają przez proces.
- Wizualnie reprezentują procesy zarządzania.
- Dołącz inne elementy Runbook jako podrzędne elementy Runbook do tworzenia przepływów pracy wysokiego poziomu.
- Zachęcaj do programowania modułowego.
Ograniczenia
- Nie można utworzyć ani edytować poza witryną Azure Portal.
- Może wymagać działania kodu zawierającego kod programu PowerShell w celu wykonania złożonej logiki.
- Nie można przekonwertować na jeden z formatów tekstowych, a także nie można przekonwertować runbooka tekstowego na format graficzny.
- Nie można wyświetlić ani bezpośrednio edytować kodu programu PowerShell tworzonego przez graficzny przepływ pracy. Możesz wyświetlić kod tworzony w każdym działaniu kodowym.
- Nie można uruchamiać elementów Runbook w hybrydowym procesie roboczym elementu Runbook systemu Linux. Zobacz Jak zautomatyzować zasoby w centrum danych lub w chmurze za pomocą Hybrydowego Agenta Runbook.
- Graficzne runbooki nie mogą być podpisane cyfrowo.
Następne kroki