日程Fit|「いつ空いてますか?」の往復はもう不要。候補日を選んでURLを送るだけ|登録不要|今すぐ無料で使う →

Azure AutomationランブックをPowerShell 7.6へ移行する手順と互換性チェック

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などの互換性確認ポイントを解説します。

日程Fit。無料・登録不要。「いつ空いてる?」を、ひとつのリンクで。リンクを送って、○△×でかんたん日程調整。無料で日程を作る。
目次

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ポータルで次の順に操作します。

  1. 対象のAutomationアカウントを開く
  2. 必要に応じて「Try Runtime environment experience」を選択する
  3. 「Process Automation」から「Runtime Environments」を開く
  4. 「Create」を選択する
  5. Languageで「PowerShell」を選択する
  6. Runtime versionで「7.6」を選択する
  7. Packages画面でAz、Azure CLI、追加モジュールを確認する
  8. 設定を確認して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ポータルでは、次の手順で関連付けを変更できます。

  1. Automationアカウントの「Runbooks」を開く
  2. 対象ランブックのチェックボックスを選択する
  3. 「Update Runtime Environment」を選択する
  4. 作成したPowerShell 7.6環境を選択する
  5. 「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-WorkflowStorage、Table、SQLなどへ進捗を保存
parallelForEach-Object -Parallelなどを検討
子WorkflowStart-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で成功した後は、次の順序で確認します。

  1. ランブックをPublishする
  2. 制御された時間帯に手動で1回実行する
  3. 通常のジョブ履歴と出力を確認する
  4. スケジュールまたはWebhookから実行する
  5. 次回の定期実行後も結果を確認する

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-AzContextAutosaveSet-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の作成は、早めに着手するのが安全です。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次