Azure AutomationでPowerShell 7.4以前のランブックを運用している場合は、PowerShell 7.6への移行準備を始めるべき時期です。
2026年7月30日、MicrosoftはAzure Update 568102として、PowerShell 7.6ランブック、Runtime Environment、PowerShell 7.6ランブック内でのAzure CLIコマンド実行を一般提供しました。安全に移行するポイントは、既存環境を一斉に切り替えるのではなく、PowerShell 7.6用のRuntime Environmentを新しく作成し、モジュール構成を固定したうえで、影響の小さいランブックから段階的に切り替えることです。
この記事では、Azure AutomationランブックをPowerShell 7.6へ移行する具体的な手順と、モジュール、認証、Hybrid Runbook Workerなどの互換性確認ポイントを解説します。
Azure AutomationのPowerShell 7.6対応で何が変わったのか
今回の一般提供には、主に次の3つが含まれています。
| 提供された機能 | 内容 | 実務上のメリット |
|---|---|---|
| PowerShell 7.6ランブック | サポート対象のPowerShell 7.6でランブックを実行可能 | 新しい言語機能、セキュリティ更新、パフォーマンス改善を利用できる |
| Runtime Environment | 言語、ランタイム、パッケージを実行環境として管理 | ランブックごとに使用するモジュール構成を分離しやすい |
| Azure CLIコマンド対応 | PowerShell 7.6ランブックからAzure CLIを実行可能 | PowerShellとazコマンドを組み合わせた自動化が可能 |
Runtime Environmentは、ランブックの実行に使用する言語、バージョン、Azモジュール、Azure CLI、追加パッケージをまとめて定義する仕組みです。1つのAutomationアカウント内に複数の環境を作成できるため、モジュール競合を避ける目的だけでAutomationアカウントを分割する必要性を減らせます。
PowerShell 7.6は現在のLTSバージョン
PowerShell 7.6は.NET 10を基盤とするLTS版です。Microsoftのサポートライフサイクル情報では、従来のLTS版であるPowerShell 7.4のサポート期限は2026年11月10日とされています。(Microsoft Learn)
Azure Automationの言語ランタイムは、PowerShell本体または基盤OSのサポート終了日のうち、早い方に合わせて段階的にサポートが縮小されます。サポートを終了したランタイムは引き続き動作する場合がありますが、新機能、セキュリティ更新、パフォーマンス最適化の対象外となり、実行インスタンス数が制限される可能性もあります。(Microsoft Learn)
そのため、PowerShell 7.4を使用している場合も、「まだ動いているから」と先送りせず、2026年11月までにPowerShell 7.6への移行を完了できる計画を立てるのが安全です。
使用中のランタイム別に移行方針を決める
移行の難易度は、現在使用しているPowerShellのバージョンやランブック形式によって異なります。
| 現在のランタイム・形式 | 移行優先度 | 主な対応 |
|---|---|---|
| PowerShell 7.4 | 高い | モジュールとPowerShell 7.6の破壊的変更を確認して移行 |
| PowerShell 7.2/7.1 | 最優先 | サポート対象外のため、モジュールを含めて早急に移行 |
| PowerShell 5.1のテキストランブック | 個別判断 | .NET Framework依存やWindows専用モジュールを確認 |
| PowerShell Workflow | 直接移行不可 | 通常のPowerShellランブックとして書き直す |
| Graphical PowerShell Workflow | 直接移行不可 | テキスト形式などへの再設計を検討 |
| Hybrid Runbook Worker | 要実機検証 | Worker側のPowerShell、拡張機能、モジュールも更新 |
PowerShell 7.xはPowerShell Workflowをサポートしていません。また、PowerShell Workflow、Graphical PowerShell、Graphical PowerShell Workflowは、システム生成されたPowerShell 5.1のRuntime Environmentでのみ動作します。単純に実行環境を7.6へ変更するのではなく、処理を通常のPowerShellスクリプトとして再構成する必要があります。(Microsoft Learn)
Azure AutomationランブックをPowerShell 7.6へ移行する手順
現在のランブック構成を棚卸しする
最初に、Automationアカウント内のランブックを一覧化します。コードだけではなく、実行条件や認証方法も記録してください。
| 確認項目 | 記録する内容 |
|---|---|
| ランブック名 | 本番、検証、停止済みなどの用途 |
| 現在のランタイム | PowerShell 5.1、7.2、7.4など |
| 実行方法 | 手動、スケジュール、Webhook、親ランブック |
| 実行場所 | Azureサンドボックス、Hybrid Runbook Worker |
| 認証方法 | マネージドID、資格情報資産、証明書 |
| 使用モジュール | Az、Microsoft Graph、Exchange Online、独自モジュールなど |
| 外部接続先 | Azure、Microsoft 365、SQL、REST API、オンプレミス機器 |
| 更新処理の有無 | VM停止、リソース作成、ユーザー変更など |
| ロールバック方法 | 旧Runtime Environmentへの再関連付け、コード復元 |
特に、複数のランブックから呼び出される共通ランブックや、業務時間外に自動実行されるランブックを見落とさないようにします。
現在のモジュール構成を記録する
既存ランブックで次のコードを実行すると、実行中のPowerShellと使用可能なモジュールを確認できます。
$PSVersionTable | Format-List
Get-Module -ListAvailable |
Sort-Object Name, Version |
Select-Object Name, Version, CompatiblePSEditions, Path
結果はファイルなどに保存し、PowerShell 7.6環境で取得した結果と比較します。
単に「同じモジュール名が存在するか」だけでは不十分です。Azモジュールのバージョン、依存モジュール、PowerShell Core対応状況まで確認してください。
PowerShell 7.6用のRuntime Environmentを新規作成する
Azureポータルで次の順に操作します。
- 対象のAutomationアカウントを開く
- 必要に応じて「Try Runtime environment experience」を選択する
- 「Process Automation」から「Runtime Environments」を開く
- 「Create」を選択する
- Languageで「PowerShell」を選択する
- Runtime versionで「7.6」を選択する
- Packages画面でAz、Azure CLI、追加モジュールを確認する
- 設定を確認してRuntime Environmentを作成する
Runtime Environment名は、用途とモジュール構成が分かる名前にします。
ps76-test
ps76-prod-az-validated
ps76-prod-mggraph
Runtime Environmentでは、言語とランタイムバージョンを後から変更できません。モジュールの追加や更新は可能ですが、変更内容はその環境に関連付けられたすべてのランブックへ反映されます。したがって、検証用と本番用を分け、既存の本番環境を直接変更しない構成が安全です。(Microsoft Learn)
なお、一般提供直後はMicrosoft Learnの一部手順にPowerShell 7.4の画面例が残っている場合があります。Azure Update 568102ではPowerShell 7.6の一般提供が正式に発表されているため、実際のAzureポータルで7.6を選択してください。
必要なモジュールと依存パッケージを追加する
既存環境で使用しているモジュールを、新しいRuntime Environmentへ追加します。
確認すべきポイントは次のとおりです。
- モジュールがPowerShell 7.6および.NET 10に対応しているか
- Azモジュールのバージョンが変わっていないか
- モジュールが依存する別のモジュールも登録されているか
- 独自モジュールに.NET Framework専用DLLが含まれていないか
- 同名コマンドを持つ複数のモジュールが競合しないか
Import-Module -RequiredVersionで古いバージョンを固定していないか
Azure Automationでは、追加したモジュールの依存関係が実行時に検証されます。依存モジュールが不足していると、コマンドは検出されてもモジュールを読み込めず、ジョブが失敗することがあります。(Microsoft Learn)
本番環境では、安易に「最新バージョン」を選ぶのではなく、検証済みのバージョンを使用してください。
影響の小さいランブックをPowerShell 7.6へ切り替える
最初から複数のランブックを一括移行せず、参照処理だけを行うランブックなど、影響の小さいものを1本選びます。
Azureポータルでは、次の手順で関連付けを変更できます。
- Automationアカウントの「Runbooks」を開く
- 対象ランブックのチェックボックスを選択する
- 「Update Runtime Environment」を選択する
- 作成したPowerShell 7.6環境を選択する
- 「Update」を実行する
Runtime Environmentの変更時点ですでに実行中のジョブには影響しません。問題が発生した場合は、同じ手順で旧Runtime Environmentへ関連付け直せます。(Microsoft Learn)
PowerShell 7.6移行時の互換性確認ポイント
PowerShell 7.6固有の変更を確認する
PowerShell 7.6では、更新されたモジュールや一部の破壊的変更があります。
代表例として、従来のThreadJobモジュールはMicrosoft.PowerShell.ThreadJobへ置き換えられました。Start-ThreadJobコマンド自体は変わりませんが、モジュール修飾名を明示しているコードは修正が必要です。
# 修正前
ThreadJob\Start-ThreadJob
# 修正後
Microsoft.PowerShell.ThreadJob\Start-ThreadJob
このほか、Join-Pathの-ChildPathパラメーター型の変更や、直接呼び出している.NET APIの差異が影響する可能性があります。PowerShell標準コマンドだけで構成されたランブックでも、エラー処理や戻り値の型まで確認してください。(Microsoft Learn)
PowerShell 5.1からの移行は.NETの違いに注意する
Windows PowerShell 5.1は.NET Framework上で動作しますが、PowerShell 7.6は.NET 10上で動作します。
そのため、次のコードは特に注意が必要です。
- .NET Framework専用クラスを直接呼び出している
- Windows専用モジュールに依存している
- COMオブジェクトを使用している
- Windowsのレジストリやローカルサービスを操作している
- 独自DLLを
Add-Typeで読み込んでいる - PowerShell Workflowや
InlineScriptを使用している
PowerShell 7にはWindows PowerShell互換機能もありますが、Windows上でWindows PowerShell 5.1を使用して動作し、戻り値はシリアル化されたオブジェクトになります。Azure Automationのクラウドジョブで確実に利用できる移行手段として前提にせず、必要な処理はPowerShell 7対応モジュールへ置き換えるか、Hybrid Runbook Worker上で実機検証してください。(Microsoft Learn)
認証コンテキストを明示する
Azure Automationでは、別のランブックが使用したAzコンテキストを誤って引き継がないよう、プロセス単位のコンテキスト自動保存を無効にします。
$ErrorActionPreference = 'Stop'
Disable-AzContextAutosave -Scope Process
$AzureContext = (Connect-AzAccount -Identity).Context
$AzureContext = Set-AzContext `
-SubscriptionId $AzureContext.Subscription.Id `
-DefaultProfile $AzureContext
Get-AzResourceGroup -DefaultProfile $AzureContext
複数サブスクリプションを扱うランブックでは、サブスクリプションIDをパラメーターとして受け取り、実行対象を明示する方が安全です。Microsoftも、別ランブックの認証コンテキストを継承しない構成としてDisable-AzContextAutosaveを使用する例を案内しています。(Microsoft Learn)
PowerShell Workflowは通常のランブックへ書き直す
PowerShell Workflowで使用していた処理は、そのままPowerShell 7.6へ移行できません。
代表的な置き換えは次のとおりです。
| Workflowの機能 | 移行後の対応例 |
|---|---|
workflow | 通常のPowerShell関数やスクリプトへ変更 |
InlineScript | 通常のスクリプトブロックや関数へ変更 |
Checkpoint-Workflow | Storage、Table、SQLなどへ進捗を保存 |
parallel | ForEach-Object -Parallelなどを検討 |
| 子Workflow | Start-AzAutomationRunbookで別ランブックを起動 |
処理途中からの再開が必要な場合は、最後に完了した処理を外部ストレージへ記録し、再実行時に続きから処理できる設計へ変更します。
署名付きランブックを使用していないか確認する
Azure AutomationのPowerShell 7.xランブックには、署名付きランブックに関する制約があります。特に、署名検証を必須にしたHybrid Runbook WorkerでPowerShell 7.xへ移行する場合は、現在の実行方式をそのまま維持できない可能性があります。(Microsoft Learn)
コード署名を運用要件としている組織では、PowerShell 7.6への切り替え前に、リポジトリの承認フロー、デプロイ権限、Azure RBAC、変更履歴の保存など、代替統制を検討してください。
Azure CLIの出力差分もテストする
PowerShell 7.6ランブックではAzure CLIコマンドを使用できますが、azコマンドの結果を文字列として解析している場合は注意が必要です。
$result = az account show --output json |
ConvertFrom-Json
$result.id
表形式の出力を正規表現や文字位置で解析するのではなく、JSON出力をConvertFrom-Jsonでオブジェクト化すると、表示形式の変更による影響を抑えられます。
Test paneで実行結果を確認する
ランブックをPowerShell 7.6へ関連付けたら、Azureポータルの「Test pane」で検証します。
ただし、Test paneは単なる構文チェックではありません。下書き版のランブックが実際に実行され、Azureリソースの作成、停止、削除などの処理も行われます。一方で、通常のジョブ履歴は作成されません。そのため、必ず検証用リソースや読み取り専用処理から試してください。(Microsoft Learn)
確認項目は次のとおりです。
- エラー、警告、Verbose出力が想定どおりか
- 使用するAzコマンドがすべて認識されるか
- 戻り値の型やJSON構造が変わっていないか
- マネージドIDの権限が足りているか
- 正しいサブスクリプションを操作しているか
- パラメーターの未指定、空文字、異常値を処理できるか
- 外部APIのタイムアウトや一時エラーを処理できるか
- 実行時間が従来から大幅に変化していないか
- Hybrid Runbook Workerでも同じ結果になるか
更新系ランブックでは、可能であれば-WhatIf相当の処理や検証モードを用意します。
param(
[switch]$DryRun
)
if ($DryRun) {
Write-Output '検証モードのため、更新処理は実行しません。'
} else {
# 本番の更新処理
}
Test paneだけで移行完了と判断しない
Test paneでは下書き版が実行されますが、スケジュールやWebhookから実行されるのは公開済みのランブックです。
Test paneで成功した後は、次の順序で確認します。
- ランブックをPublishする
- 制御された時間帯に手動で1回実行する
- 通常のジョブ履歴と出力を確認する
- スケジュールまたはWebhookから実行する
- 次回の定期実行後も結果を確認する
Azureサンドボックスのローカル時刻はUTCです。日本時間を前提とした日時処理がある場合は、タイムゾーン変換もテストしてください。(Microsoft Learn)
Hybrid Runbook Workerは別途実機で検証する
Hybrid Runbook Workerを使用している場合、Azure側でRuntime EnvironmentをPowerShell 7.6へ変更するだけでは不十分です。
次の項目を確認します。
- Worker上に対応するPowerShellがインストールされているか
- WindowsまたはLinuxの対応OSか
- Hybrid Worker拡張機能が必要なバージョン以上か
- PowerShell実行ファイルへのパス設定が正しいか
- 使用モジュールがWorker上にも存在するか
- Workerのサービスアカウントで必要なファイルへアクセスできるか
- プロキシ、ファイアウォール、名前解決に問題がないか
- ローカル機器やオンプレミスAPIへの接続が維持されるか
PowerShell 7.6の一般提供直後は、Hybrid Runbook WorkerのMicrosoft LearnページにPowerShell 7.4向けの設定例が残っている場合があります。環境変数名や必要な拡張機能バージョンを推測で設定せず、PowerShell 7.6向けの最新要件を確認したうえでWorker上からテストしてください。
移行時によくあるエラーと対処方法
| 症状 | 主な原因 | 対処方法 |
|---|---|---|
| コマンドが見つからない | 対象モジュールがRuntime Environmentにない | Packagesへモジュールを追加する |
| コマンドは見つかるがモジュールを読み込めない | 依存モジュール不足、DLLや.NETの非互換 | 依存関係とPowerShell 7対応状況を確認する |
| 別のサブスクリプションを操作する | Azコンテキストを引き継いでいる | Disable-AzContextAutosaveとSet-AzContextを使用する |
| Test paneでは成功するが定期実行で失敗する | 未公開、パラメーター差、ID差、RunOn設定差 | 公開済み版を手動実行してからスケジュールを試す |
| 複数のランブックが同時に失敗する | 共通Runtime Environmentのモジュールを更新した | モジュールを元に戻すか、旧環境へ再関連付けする |
| 日付や実行時間がずれる | UTCを日本時間として扱っている | タイムゾーンを明示して変換する |
| PowerShell 5.1では動くが7.6では失敗する | .NET FrameworkまたはWindows専用機能への依存 | 対応モジュールへの置換またはHybrid Workerを検討する |
特に注意したいのは、1つのRuntime Environmentを多数のランブックで共有している場合です。環境内のモジュールを更新すると、関連付けられたランブックすべてへ反映されます。モジュール更新とランタイム移行を同時に行わず、原因を切り分けられる単位で変更してください。(Microsoft Learn)
本番移行は段階的に進める
PowerShell 7.6への切り替えは、次の順序で進めると影響を抑えられます。
| 段階 | 対象 |
|---|---|
| 試験移行 | リソース一覧取得、稼働状況確認などの読み取り専用ランブック |
| 小規模移行 | 開発環境や検証環境だけを操作するランブック |
| 通常移行 | 通知、レポート作成、定期メンテナンス |
| 重要処理 | VM停止、アカウント変更、バックアップ、コスト制御 |
| 最終移行 | 親子関係を持つランブックやHybrid Runbook Worker処理 |
旧Runtime Environmentは、移行直後に削除しないでください。問題発生時に旧環境へ戻せる状態を一定期間残します。削除したRuntime Environmentは復元できないため、すべての定期実行と例外処理を確認してから削除します。(Microsoft Learn)
PowerShell 7.6移行チェックリスト
移行前に、次の項目を確認してください。
- PowerShell 7.4、7.2、7.1のランブックを一覧化した
- Workflow形式のランブックを識別した
- 現在のコードとモジュール構成を保存した
- PowerShell 7.6用Runtime Environmentを新規作成した
- 検証用と本番用のRuntime Environmentを分けた
- Azモジュールと依存モジュールのバージョンを確認した
- Windows PowerShell専用処理を洗い出した
- マネージドIDとサブスクリプション指定を確認した
- Azure CLIのJSON出力を確認した
- Test paneを非本番リソースで実行した
- 公開後の手動ジョブを確認した
- スケジュールやWebhookからの実行を確認した
- Hybrid Runbook Worker上でも検証した
- 旧Runtime Environmentへの戻し方を記録した
- ジョブ履歴を監視する期間を決めた
PowerShell 7.6用環境を作り、低リスクのランブックから移行する
Azure AutomationのPowerShell 7.6移行では、コードの書き換えよりも、Runtime Environmentとモジュール構成の管理が重要です。
まず、PowerShell 7.6用の検証環境を新しく作成し、現在使用しているモジュールを再現します。その後、読み取り専用のランブックを1本だけ関連付け、非本番環境でテストします。成功したら公開済み版を手動実行し、ジョブ履歴を確認してから対象を広げてください。
PowerShell 7.4のサポート期限が近いため、既存ランブックの棚卸しとPowerShell 7.6用Runtime Environmentの作成は、早めに着手するのが安全です。

コメント