Azure Automation のプロセス オートメーション機能では、次の表で定義されているように、いくつかの種類の Runbook がサポートされています。
| タイプ |
説明 |
PowerShell (推奨) |
Windows PowerShell スクリプトに基づくテキスト形式の Runbook です。 現在サポートされているバージョンはPowerShell 7.6、PowerShell 7.4、PowerShell 5.1です。
PowerShell 7.1およびPowerShell 7.2は親製品であるPowerShellでサポートされていないため、PowerShell 7.6やPowerShell 7.4のような長期サポートバージョンでランブックを作成しましょう。 |
|
PowerShell ワークフロー |
Windows PowerShell ワークフロー スクリプトに基づくテキスト形式の Runbook です。 |
パイソン (推奨) |
Python スクリプトに基づくテキスト形式の Runbook です。 現在サポートされているバージョンは Python 3.10 です。
Python 2.7 と Python 3.8 は親製品の Python ではサポートされなくなったため、Python 3.10 で Runbook を作成することをお勧めします。 |
|
グラフィカル |
Windows PowerShell に基づき、Azure portal のグラフィカル エディターで完全に作成および編集される グラフィカル Runbook です。 |
|
グラフィカル PowerShell ワークフロー |
Windows PowerShell ワークフローに基づき、Azure portal のグラフィカル エディターで完全に作成および編集される グラフィカル Runbook です。 |
プロセス オートメーション環境の詳細については、「Azure Automation での Runbook の実行」を参照してください。
注意
Azure Automation は、親製品、PowerShell、Python によって公開されたタイムラインに従って、 PowerShell と Python 言語バージョンのサポート ライフサイクルに従います。 サポートされている言語バージョンの Runbook を使用することをお勧めします。
特定の Runbook に使用する種類を決定するときは、次の考慮事項を考慮してください。
- グラフィカル Runbook からテキスト Runbook への変換、およびこの逆の変換を行うことはできません。
- 異なる種類の Runbook を子 Runbook として使用する場合は制限があります。 詳しくは、「Azure Automation での子 Runbook」をご覧ください。
PowerShell Runbook
PowerShell Runbook は、Windows PowerShell に基づきます。 Azure ポータルのテキスト エディターを使用して、Runbook のコードを直接編集します。 また、任意のオフライン テキスト エディターを使用したり、Azure Automation に Runbook をインポート したりすることもできます。
PowerShell のバージョンは、指定された ランタイム バージョン によって決まります。
同じ Azure サンドボックスと Hybrid Runbook Worker は、異なるランタイム バージョンを対象とする複数の PowerShell Runbook を並行して実行できます。 PowerShell 7.6およびPowerShell 7.4のランタイムバージョンは、すべての地域でクラウドジョブおよびハイブリッドジョブの両方でサポートされています。
注意
- Runbook の実行時に、 ランタイム バージョンを 7.4 として選択した場合、 7.4 ランタイム バージョンをターゲットとする PowerShell モジュールが使用され、 ランタイム バージョンを5.1 として選択した場合は、5.1 ランタイム バージョンをターゲットとする PowerShell モジュールが使用されます。
モジュールに適切なランタイム バージョンを選択したことを確認してください。
たとえば、 ランタイム バージョン7.4 で SharePoint オートメーション シナリオ用の Runbook を実行している場合は、 ランタイム バージョン7.4 でモジュールをインポートします。 ランタイム バージョン5.1 で SharePoint オートメーション シナリオ用の Runbook を実行する場合は、 ランタイム バージョン5.1 でモジュールをインポートします。
長所
- すべての複雑なロジックを PowerShell コードで実装でき、PowerShell ワークフローのその他の複雑さはありません。
- 実行前にコンパイルする必要がないため、PowerShell ワークフロー Runbook よりも速く起動できます。
- Windows と Linux の両方の Azure と Hybrid Runbook Worker で動作します。
制限事項と既知の問題
現在、PowerShell Runbook には次の制限事項と既知の問題があります。
制限 PowerShell 7.6は ランタイム環境エクスペリエンスで利用可能です。
PowerShell 7.6のランタイムバージョンでは、インポートしたモジュールのモジュールアクティビティは解凍されません。
PowerShell 7.x では、ワークフローはサポートされていません。 詳細については、「 PowerShell ワークフロー」を参照してください。
PowerShell 7.x では現在、署名された Runbook はサポートされていません。
ソースコントロール統合はPowerShell 7.6をサポートしていません。 また、PowerShell 7.6のランブックはソース管理でAutomationアカウントのRuntime 5.1として作成されます。
Azモジュール15.1.0はデフォルトでインストールされています。 Azure portal または API を使用して Az バージョンが再度構成されると、選択した Az モジュール バージョンのコンポーネント モジュールの完全なリストが表示されます。
インポートされたPowerShell 7.6モジュールはジョブ実行時に検証されます。 ジョブの実行を成功させるには、選んだモジュールのすべての依存関係もインポートする必要があります。
Azure Automationランブックは-Credential付きの Start-Job をサポートしていません。
Azure では、すべての PowerShell 入力パラメーターがサポートされているわけではありません。
詳細情報 を参照してください。
既知の問題
サービス バックエンド インフラストラクチャの変更により、C:\modules などの内部ファイルパスに依存する Runbook が失敗する可能性があります。 Runbook コードを変更して、内部ファイル パスへの依存関係がないことを確認し、Get-ChildItem を使用 して必要なモジュール情報を取得します。
Get-AzStorageAccount コマンドレットがエラーで失敗する可能性があります。Get-AzStorageAccount コマンドは Az.Storage モジュールで見つかりましたが、モジュールを読み込めませんでした。
.\child-runbook.ps1 を使った子スクリプトの実行はサポートされていません。
回避策: Start-AutomationRunbook (内部コマンドレット) または Start-AzAutomationRunbook (Az.Automation モジュールにある) を使用して、親 Runbook から別の Runbook を開始します。
ExchangeOnlineManagement モジュール バージョン 3.0.0 以降を使用すると、エラーが発生する可能性があります。 この問題を解決するには、PowerShellGet モジュールと PackageManagement モジュールを明示的にアップロードしてください。
Az.Automation モジュール内で New-AzAutomationVariable コマンドレットを使って型 object の変数をアップロードすると、操作は期待どおりに機能しません。
回避策: ConvertTo-Json コマンドレットを使ってオブジェクトを JSON 文字列に変換してから、JSON 文字列を値として含む変数をアップロードします。 この回避策により、Azure Automation 環境内で変数が JSON 文字列として適切に処理されるようになります。
例 - Azure VMに関する情報を保存するPowerShellオブジェクトを作成する
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
制限事項
注意
PowerShell 7.4のランタイムバージョンは、すべてのリージョンでクラウドジョブとハイブリッドジョブの両方をサポートしています。
- PowerShell 7.4 は、 ランタイム環境エクスペリエンスでのみ使用できます。
- PowerShell 7.4 ランタイム バージョンの場合、インポートされたモジュールのモジュール アクティビティは抽出されません。
VS Code 用の Azure Automation 拡張機能を使用して、Runbook の作成エクスペリエンスを簡素化します。
- PowerShell 7.x では、ワークフローはサポートされていません。 詳細については、「PowerShell ワークフロー」を参照してください。
- PowerShell 7.x では現在、署名された Runbook はサポートされていません。
- ソース管理の統合では、PowerShell 7.4 はサポートされていません。 また、ソース管理の PowerShell 7.4 Runbook は、Automation アカウントでランタイム 5.1 として作成されます。
- Az module 12.3.0 は既定でインストールされます。 Azure portal または API を使用して Az バージョンが再度構成されると、選択した Az モジュール バージョンのコンポーネント モジュールの完全なリストが表示されます。
- インポートされた PowerShell 7.4 モジュールは、ジョブの実行中に検証されます。 ジョブの実行を成功させるには、選んだモジュールのすべての依存関係もインポートする必要があります。
- Azure Runbook では
Start-Job を -credential でサポートされていません。
- Azure では、すべての PowerShell 入力パラメーターがサポートされているわけではありません。
詳細情報 を参照してください。
既知の問題
サービス バックエンド インフラストラクチャの変更により、C:\modules などの内部ファイルパスに依存する Runbook が失敗する可能性があります。 Runbook コードを変更して、内部ファイル パスへの依存関係がないことを確認し、Get-ChildItem を使用 して必要なモジュール情報を取得します。
Get-AzStorageAccount コマンドレットがエラーで失敗する可能性があります。Get-AzStorageAccount コマンドは Az.Storage モジュールで見つかりましたが、モジュールを読み込めませんでした。
.\child-runbook.ps1 を使った子スクリプトの実行はサポートされていません。
回避策: Start-AutomationRunbook (内部コマンドレット) または Start-AzAutomationRunbook (Az.Automation モジュールにある) を使用して、親 Runbook から別の Runbook を開始します。
ExchangeOnlineManagement モジュール バージョン 3.0.0 以降を使用すると、エラーが発生する可能性があります。 この問題を解決するには、PowerShellGet モジュールと PackageManagement モジュールを明示的にアップロードしてください。
Az.Automation モジュール内で New-AzAutomationVariable コマンドレットを使って型 object の変数をアップロードすると、操作は期待どおりに機能しません。
回避策: ConvertTo-Json コマンドレットを使ってオブジェクトを JSON 文字列に変換してから、JSON 文字列を値として含む変数をアップロードします。 この回避策により、Azure Automation 環境内で変数が JSON 文字列として適切に処理されるようになります。
例 - Azure VM に関する情報を保存した PowerShell オブジェクトを作成する
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
制限事項
注意
PowerShell 7.2 バージョンは、親製品の PowerShell ではサポートされなくなりました。
- PowerShell 7.2 ランタイム バージョンの場合、インポートされたモジュールのモジュール アクティビティは抽出されません。
- PowerShell 7.x では、ワークフローはサポートされていません。 詳細については、「PowerShell ワークフロー」を参照してください。
- PowerShell 7.x では現在、署名された Runbook はサポートされていません。
- ソース管理の統合では、PowerShell 7.2 はサポートされていません。 また、ソース管理の PowerShell 7.2 Runbook は、Automation アカウントに Runtime 5.1 として作成されます。
- Az モジュール 8.3.0 は既定でインストールされています。 Azure portal または API を使用して Az バージョンが再度構成されると、選択した Az モジュール バージョンのコンポーネント モジュールの完全なリストが表示されます。
- インポートされた PowerShell 7.2 モジュールは、ジョブの実行中に検証されます。 ジョブの実行を成功させるには、選んだモジュールのすべての依存関係もインポートする必要があります。
- Azure Runbook では
Start-Job を -credential でサポートされていません。
- Azure では、すべての PowerShell 入力パラメーターがサポートされているわけではありません。
詳細情報 を参照してください。
既知の問題
サービス バックエンド インフラストラクチャの変更により、C:\modules などの内部ファイルパスに依存する Runbook が失敗する可能性があります。 Runbook コードを変更して、内部ファイル パスへの依存関係がないことを確認し、Get-ChildItem を使用 して必要なモジュール情報を取得します。
Get-AzStorageAccount コマンドレットがエラーで失敗する可能性があります。Get-AzStorageAccount コマンドは Az.Storage モジュールで見つかりましたが、モジュールを読み込めませんでした。
.\child-runbook.ps1 を使った子スクリプトの実行はサポートされていません。
回避策: Start-AutomationRunbook (内部コマンドレット) または Start-AzAutomationRunbook (Az.Automation モジュールにある) を使用して、親 Runbook から別の Runbook を開始します。
ExchangeOnlineManagement モジュール バージョン 3.0.0 以降を使用すると、エラーが発生する可能性があります。 この問題を解決するには、PowerShellGet モジュールと PackageManagement モジュールを明示的にアップロードしてください。
Az.Automation モジュール内で New-AzAutomationVariable コマンドレットを使って型 object の変数をアップロードすると、操作は期待どおりに機能しません。
回避策: ConvertTo-Json コマンドレットを使ってオブジェクトを JSON 文字列に変換してから、JSON 文字列を値として含む変数をアップロードします。 この回避策により、Azure Automation 環境内で変数が JSON 文字列として適切に処理されるようになります。
例 - Azure VM に関する情報を保存した PowerShell オブジェクトを作成する
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
制限事項
- Runbook では並列処理を使用して複数のアクションを同時に実行することはできません。
- Runbook にチェックポイントを使用し、エラーが発生した場合に Runbook を再開することはできません。
- PowerShell、PowerShell ワークフロー Runbook とグラフィカル Runbook を子 Runbook として組み込むには、新しいジョブを作成する Start-AzAutomationRunbook コマンドレットを使用する必要があります。
- Runbooks では PowerShell #Requires ステートメントを使用できません。Azure sandbox または Hybrid Runbook Workers でサポートされておらず、ジョブが失敗する原因となる可能性があります。
- Azure Runbook では
Start-Job を -credential でサポートされていません。
- Azure では、すべての PowerShell 入力パラメーターがサポートされているわけではありません。
詳細情報 を参照してください。
既知の問題
サービス バックエンド インフラストラクチャの変更により、C:\modules などの内部ファイルパスに依存する Runbook が失敗する可能性があります。 Runbook コードを変更して、内部ファイル パスへの依存関係がないことを確認し、Get-ChildItem を使用 して必要なモジュール情報を取得します。
サンプル スクリプト
# 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-AzStorageAccount コマンドレットがエラーで失敗する可能性があります。Get-AzStorageAccount コマンドは Az.Storage モジュールで見つかりましたが、モジュールを読み込めませんでした。
PowerShell Runbook では、null 値を含む暗号化されていない変数資産は取得できません。
PowerShell Runbook では、名前に *~* が含まれる変数資産は取得できません。
PowerShell Runbook のループ内の Get-Process 操作は、約 80 回の反復後にクラッシュする可能性があります。
一度に大量のデータを出力ストリームに書き込もうとした場合、PowerShell Runbook が失敗する可能性があります。 通常、大きなオブジェクトの処理に必要な情報のみを Runbook から出力することで、この問題を回避できます。 たとえば、制限なしで Get-Process を使用するのではなく、Get-Process | Select ProcessName, CPU のように必要なパラメーターのみをコマンドレットから出力させることができます。
ExchangeOnlineManagement モジュール バージョン 3.0.0 以降を使用すると、エラーが発生する可能性があります。 この問題を解決するには、PowerShellGet モジュールと PackageManagement モジュールも明示的にアップロードしてください。
バージョン 2.12.3 以降のモジュール Az.Accounts をインポートする場合は、PowerShell 5.1 Runbook がこのバージョンのモジュールに依存している場合は、Newtonsoft.Json v10 モジュールを明示的にインポートしてください。 この問題を回避するには、PowerShell 7.2 Runbook を使用してください。
Az.Automation モジュール内で New-AzAutomationVariable コマンドレットを使って型 object の変数をアップロードすると、操作は期待どおりに機能しません。
回避策: ConvertTo-Json コマンドレットを使ってオブジェクトを JSON 文字列に変換してから、JSON 文字列を値として含む変数をアップロードします。 この回避策により、Azure Automation 環境内で変数が JSON 文字列として適切に処理されるようになります。
例 - Azure VM に関する情報を保存した PowerShell オブジェクトを作成する
# 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 7.1 は、親製品の PowerShell ではサポートされなくなりました。 長期的なサポートのために PowerShell 7.4 で新しい Runbook を作成し、古い Runbook を更新することをお勧めします。
- Azure Automation の内部 PowerShell コマンドレットは、Linux Hybrid Runbook Worker ではサポートされていません。 Automation アカウントの共有リソース (資産) 関数にアクセスするには、お使いの PowerShell Runbook の冒頭で
automationassets モジュールをインポートする必要があります。
- PowerShell 7 ランタイム バージョンの場合、インポートされたモジュールのモジュール アクティビティは抽出されません。
- Runbook パラメーターの種類 PSCredential は、PowerShell 7 ランタイム バージョンではサポートされていません。
- PowerShell 7.x では、ワークフローはサポートされていません。 詳細については、「PowerShell ワークフロー」を参照してください。
- PowerShell 7.x では現在、署名された Runbook はサポートされていません。
- ソース管理の統合は PowerShell 7.1 (プレビュー) をサポートしていません。また、ソース管理の PowerShell 7.1 (プレビュー) Runbook は、Automation アカウントに Runtime 5.1 として作成されます。
- PowerShell 7.1 モジュール管理は、
Get-AzAutomationModule コマンドレットではサポートされていません。
- 入力値に「'」という文字が含まれている場合、Runbook はログ トレースなしで失敗します。
- Azure Runbook では
Start-Job を -credential でサポートされていません。
- Azure では、すべての PowerShell 入力パラメーターがサポートされているわけではありません。
詳細情報 を参照してください。
既知の問題
サービス バックエンド インフラストラクチャの変更により、C:\modules などの内部ファイルパスに依存する Runbook が失敗する可能性があります。 Runbook コードを変更して、内部ファイル パスへの依存関係がないことを確認し、Get-ChildItem を使用 して必要なモジュール情報を取得します。
サンプル スクリプト
# 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-AzStorageAccount コマンドレットがエラーで失敗する可能性があります。Get-AzStorageAccount コマンドは Az.Storage モジュールで見つかりましたが、モジュールを読み込めませんでした。
このプレビューでは、.\child-runbook.ps1 を使用した子スクリプトの実行はサポートされていません。
回避策: Start-AutomationRunbook (内部コマンドレット) または Start-AzAutomationRunbook (Az.Automation モジュールにある) を使用して、親 Runbook から別の Runbook を開始します。
ログ設定を定義する Runbook プロパティは、PowerShell 7 ランタイムではサポートされていません。
回避策: Runbook の開始時に、次のように設定を明示的に設定します。
$VerbosePreference = "Continue"
$ProgressPreference = "Continue"
Azure Automation Az.Accounts このバージョンを使用すると予期しない動作が発生する可能性があるため、PowerShell 7 ランタイムのバージョン 2.4.0 にモジュールをインポートすることは避けてください。
PowerShell 7 ランタイムで実行されているジョブのエラー出力ストリームで書式の問題が発生する可能性があります。
他のモジュールに依存する PowerShell 7.1 モジュールをインポートすると、依存モジュールの PowerShell 7.1 バージョンがインストールされている場合でも、インポート ボタンがグレーで表示される場合があります。 たとえば、Az.PowerShell モジュール Compute バージョン 4.20.0 は、> 2.6.0 の Az.Accounts に依存します。 この問題は、PowerShell 5.1 の同等の依存モジュールがバージョン要件を満たしていない場合に発生します。 たとえば、Az.Accounts の 5.1 バージョンは < 2.6.0 でした。
Webhook を使用して PowerShell 7 Runbook を起動すると、Webhook 入力パラメーターが無効な JSON に自動変換されます。
バージョン 3.0.0 以降ではジョブ エラーが発生する可能性があるため、ExchangeOnlineManagement モジュール バージョン 3.0.0 以降を使用することをお勧めします。
バージョン 2.12.3 以降のモジュール Az.Accounts をインポートする場合は、PowerShell 7.1 Runbook がこのバージョンのモジュールに依存している場合は、Newtonsoft.Json v10 モジュールを明示的にインポートしてください。 この問題を回避するには、PowerShell 7.2 Runbook を使用してください。
Az.Automation モジュール内で New-AzAutomationVariable コマンドレットを使って型 object の変数をアップロードすると、操作は期待どおりに機能しません。
回避策: ConvertTo-Json コマンドレットを使ってオブジェクトを JSON 文字列に変換してから、JSON 文字列を値として含む変数をアップロードします。 この回避策により、Azure Automation 環境内で変数が JSON 文字列として適切に処理されるようになります。
例 - Azure VM に関する情報を保存した PowerShell オブジェクトを作成する
# 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 ワークフロー実行手順書
PowerShell ワークフロー Runbook は、 Windows PowerShell ワークフローに基づくテキスト Runbook です。 Azure ポータルのテキスト エディターを使用して、Runbook のコードを直接編集します。 また、任意のオフライン テキスト エディターを使用したり、Azure Automation に Runbook をインポート したりすることもできます。
注意
PowerShell 7.1 (プレビュー) と PowerShell 7.2 はワークフロー Runbook をサポートしていません。
長所
- すべての複雑なロジックを PowerShell ワークフローのコードで実装できます。
- エラーが発生した場合は、チェックポイントを使用して操作を再開できます。
-
並列処理を使用して、複数のアクションを並行して実行できます。
- 高度なワークフローを作成するために、他のグラフィカル Runbook や PowerShell ワークフロー Runbook を子 Runbook として組み込むことができます。
制限事項
- PowerShell ワークフローは、PowerShell 7 以降のバージョンではサポートされていません。 そのため、古い Runbook はアップグレードできません。
- 新しい PowerShell 7 以降のバージョンと比較して、並列実行の処理が非効率的です。
- PowerShell ワークフローは、内部で複数のプロセスを使用して動作します。 そのため、あるプロセスで使用可能なモジュールが別のもので使用できない場合があり、"コマンドが見つからない" などの例外が発生します。
-
逆シリアル化されたオブジェクトなど、PowerShell ワークフローに関する別の複雑さに対応する必要があります。
- Runbook は、実行前にコンパイルする必要があるため、PowerShell Runbook よりも起動に時間がかかります。
- PowerShell Runbook を子 Runbook として含めるには、
Start-AzAutomationRunbook コマンドレットを使用する必要があります。
- Linux Hybrid Runbook Worker では Runbook を実行できません。
Python Runbook
Python Runbook は Python 3.10 でコンパイルされます。 Azure portal のテキスト エディターを使用して、Runbook のコードを直接編集することができます。 また、任意のオフライン テキスト エディターを使用したり、Azure Automation に Runbook をインポートしたりすることもできます。 Python 2.7 と Python 3.8 は親製品ではサポートされなくなりました。Python 3.10 ランタイム バージョンで Runbook を作成することをお勧めします。
Python 3.10のランタイムバージョンは、すべての地域でクラウドおよびハイブリッドジョブの両方でサポートされています。
長所
注意
Python パッケージのインポートには数分かかる場合があります。
- 堅牢な Python ライブラリを使用できます。
- Azure または Hybrid Runbook Worker で実行できます。
- コードが異なるバージョン間で互換性がある場合は、任意の 3.x バージョンのスクリプトとパッケージが動作する可能性があります。
- Windows マシン上の Python 3.10 ハイブリッド ジョブの場合は、使用する 3.x バージョンをインストールすることを選択できます。
- Linux マシン上の Python 3.10 ハイブリッド ジョブの場合、DSC OMSConfig と Linux ハイブリッド Worker を実行するには、コンピューターにインストールされている Python 3 バージョンに依存します。 Python 3 のバージョン間でメソッド シグネチャまたはコントラクトに破壊的変更がない場合には、異なるバージョンでも機能します。
制限事項
Python Runbook の制限事項は次のとおりです。
- Python 3.10 モジュールでは、現在、cp310 Linux OS を対象とするホイール ファイルのみがサポートされています。
詳細情報
- ソース管理の統合はサポートされていません。
- Python 3.10 のカスタム パッケージは、ジョブの実行時にのみ検証されます。 パッケージがランタイムで互換性がない場合、またはパッケージの必要な依存関係が Automation アカウントにインポートされていない場合、ジョブは失敗することが予想されます。
- 現在、Python 3.10 Runbook は Azure portal と Rest API からのみサポートされています。
- Python 3.8 は、親製品の Python ではサポートされなくなりました。 サポートされているバージョンで新しい Runbook を作成し、古い Runbook を更新することをお勧めします。
- Python スクリプトについて理解している必要があります。
- ソース管理の統合はサポートされていません。
- Python 3.8 モジュールの場合は、cp38-amd64 をターゲットとするホイール ファイルを使います。
- サードパーティ製ライブラリを使用するには、Automation アカウントにパッケージをインポートする必要があります。
- PowerShell/PowerShell ワークフロー内で Start-AutomationRunbook コマンドレットを使用して、Python 3.8 Runbook を開始することはできません。 この制限を回避するには、Az.Automation モジュールからStart-AzAutomationRunbook コマンドレットを使用するか、または AzureRm.Automation モジュールから Start-AzureRmAutomationRunbook コマンドレットを使用します。
- Azure Automation では sys.stderr がサポートされていません。
- Python automationassets パッケージは、pypi.org で使用できないので、Windows コンピューターにインポートできません。
-
Python 2.7 は、親製品の Python ではサポートされなくなりました。 サポートされているバージョンで新しい Runbook を作成し、古い Runbook を更新することをお勧めします。
- Python スクリプトについて理解している必要があります。
- Python 2.7.12 モジュールの場合は、ホイール ファイル cp27-amd6 を使います。
- サードパーティ製ライブラリを使用するには、Automation アカウントにパッケージをインポートする必要があります。
- Azure Automation では sys.stderr がサポートされていません。
- Python automationassets パッケージは、pypi.org で使用できないので、Windows コンピューターにインポートできません。
注意
Webhook を使用して Python Runbook を開始することはサポートされていません。
複数の Python バージョン
Windows ハイブリッド worker に適用されます。 Windows Runbook Worker では、Python 2 Runbook を実行するときに、PYTHON_2_PATH 環境変数が最初に検索され、それが有効な実行可能ファイルを参照しているかどうかが検証されます。 たとえば、インストール フォルダーが C:\Python2 の場合、C:\Python2\python.exe が有効なパスであるかどうかがチェックされます。 見つからない場合は、PATH 環境変数が検索され、同様のチェックが実行されます。
Python 3 の場合、PYTHON_3_PATH 環境変数が最初に検索された後、PATH 環境変数にフォールバックされます。
Python の 1 つのバージョンだけを使用する場合は、PATH 変数にインストール パスを追加できます。 Runbook Worker で両方のバージョンを使用する場合は、PYTHON_2_PATH と PYTHON_3_PATH をそれらのバージョンのモジュールの場所に設定します。
既知の問題
クラウド ジョブの場合、Python 3.8 のジョブが例外メッセージ invalid interpreter executable path で失敗することがあります。 この例外は、ジョブが遅延している場合、開始して 10 分以上経っている場合、または Start-AutomationRunbook を使用して Python 3.8 Runbook を開始している場合に発生することがあります。 ジョブが遅延している場合は、Runbook を再度開始するだけで十分です。
グラフィック Runbook
Azure portal のグラフィカル エディターを使用して、グラフィカルおよびグラフィカル PowerShell ワークフロー Runbook を作成および編集できます。 ただし、別のツールを使用してこの種類の Runbook を作成または編集することはできません。 グラフィカル Runbook の主な機能を次に示します。
- Automation アカウントのファイルにエクスポートし、別の Automation アカウントにインポートします。
- PowerShell コードを生成します。
- インポート時にグラフィカル PowerShell ワークフロー Runbook との間で変換します。
長所
- 視覚的な insert-link-configure 作成モデルを使用できます。
- プロセスを介したデータの流れに専念できます。
- 管理プロセスが視覚的に表現されます。
- 他の Runbook を子 Runbook として含めることで、高度なワークフローを作成できます。
- モジュール型プログラミングを促進できます。
制限事項
- Azure portal の外部で作成または編集することができません。
- 複雑なロジックを実行するために、PowerShell ワークフローのコードを含むコード アクティビティが必要になる場合があります。
-
テキスト形式のいずれかに変換することはできません。また、テキスト Runbook をグラフィカル形式に変換することもできません。
- グラフィカル ワークフローによって作成される PowerShell コードを表示したり、直接編集したりすることができません。 コード アクティビティで作成したコードは表示できます。
- Linux Hybrid Runbook Worker で Runbook を実行することができません。 「Hybrid Runbook Worker を使用してデータ センターまたはクラウドのリソースを自動化する」を参照してください。
- グラフィック Runbook はデジタル署名することができません。
次のステップ