【Azure】イメージの作成手順(Sysprep)

音声で聞く

読む前にこの記事のポイントを音声で確認できます。この音声は本記事をもとにAIツール(NotebookLM)で自動生成したもので、発音や言い回しが不自然な箇所や、内容の誤りが含まれる可能性があります。理解の補助としてご利用ください。

Azure で同じ設定の Windows 仮想マシンを何台も作りたいときは、設定済みの VM から Sysprep でカスタムイメージを作っておくと便利です。Sysprep は Windows から PC 固有の情報を削除し、再利用できる「一般化イメージ」の元を作るツールです。

ただし Sysprep には前提条件や落とし穴があり、知らずに進めるとイメージ作成に失敗したり、展開した VM が起動しなかったりします。この記事では、公式ドキュメントを参照しながら、イメージを確実に作るための手順と注意点をまとめます。

この記事でわかること
  1. 前提条件を確認し、Sysprep で VM を一般化する
  2. 一般化した VM をキャプチャしてイメージを作成する
  3. 作成したイメージから新しい VM を作成する

Sysprep とは

Sysprep(System Preparation Tool/システム準備ツール)は、Windows のインストールから PC 固有の情報(セキュリティ識別子(SID)、イベントログ、システムの復元ポイントなど)を削除し、別の PC にそのまま展開できる状態にするツールです。この処理を「一般化(generalize)」と呼びます。

VM-01 Windows Server 2022 Sysprep 一般化+イメージ化 イメージ 一般化イメージ イメージを元に作成 新しい VM Windows Server 2022 新しい VM Windows Server 2022
図1 Sysprep で一般化したイメージから、同じ構成の VM を何台も作る

Sysprep でできること

  • Windows イメージから PC 固有情報(SID など)を削除する(一般化)
  • PC 固有のドライバーをアンインストールする(ドライバーファイル自体は残す)
  • 次回起動時に OOBE(Out-of-Box Experience:初回起動時のセットアップ)へ進むよう構成する
  • 応答ファイル(unattend.xml)で無人セットアップの設定を追加する(ただし Azure の Sysprep 手順では応答ファイルは使えません。後述)

一般化イメージと特殊化イメージの違い

Azure で扱うカスタムイメージには2種類あります。この記事で作るのは一般化イメージです。

種類用途特徴
一般化(Generalized)イメージテンプレートとして複数の VM を展開したい場合Sysprep(Windows)または waagent(Linux)で固有情報を削除済み。新しい VM を作るときにユーザー名とパスワードを設定し直す
特殊化(Specialized)イメージ元の VM をそのまま複製・復元したい場合ユーザーアカウントや固有の設定をそのまま保持する。Sysprep は不要。Azure Compute Gallery でのみ扱える

Sysprep を実行する前の確認(前提条件)

Sysprep を実行する前に、次の条件を満たしているか確認します。1つでも欠けていると、Sysprep 自体は成功しても、イメージから作った VM が OOBE の段階で止まるなどの問題が起きます。

前提条件内容と対応
CD/DVD-ROM が有効Azure は一般化イメージから VM を作るとき、ISO ファイルを DVD-ROM にマウントする。無効になっていると OOBE で VM が止まる。下のコマンドで有効にしておく
リムーバブル記憶域を禁止するポリシーがない「リムーバブル記憶域へのアクセス」で全クラスを拒否するようなポリシーが適用されていないこと
BitLocker などの暗号化を解除済みSysprep はドライブが完全に復号されている必要がある。Trusted Launch の VM では BitLocker が有効になっている場合があるので確認する
ドメインに参加していないSysprep はワークグループのメンバーでのみ動く。ドメインに参加していると、Sysprep が PC をドメインから外す
Sysprep 対応のサーバーロールだけを構成一部のサーバーロール(Active Directory ドメインサービスなど)は Sysprep に対応していない。一般化後にロールが正しく動かない場合がある
MDM(Intune など)に登録していないMDM 登録時の証明書や ID は Sysprep で削除されない。複数の VM が同じ ID を持ち、構成の配信に問題が出る
アプリが Sysprep に対応しているセキュリティ製品、ストアアプリ、仮想化エージェントなどには Sysprep 非対応のものがある。各アプリの公式ドキュメントを確認する

CD/DVD-ROM を有効にするコマンド

管理者権限のコマンドプロンプトで実行します。

REM CD/DVD-ROM の有効化
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\cdrom /v start /t REG_DWORD /d 1 /f

Sysprep の起動方法とオプション

Sysprep は C:\Windows\System32\sysprep\ にある sysprep.exe です。ダブルクリックで起動すると、次の「システム準備ツール」の画面が表示されます。

画面イメージについて

この記事の画面は、実際の画面ではなく、検証時(2023年2月、Windows Server 2022 と Azure ポータル)の画面から、設定する項目と確認するポイントを抜き出して描いたイメージです。Azure ポータルは更新が多く、項目の並びや表記は変わることがあります。

システム準備ツール 3.14画面イメージ
システム準備ツール (Sysprep) は、コンピューターのハードウェア非依存およびクリーンアップを準備します。
1システム クリーンアップ アクションシステムの OOBE (Out-of-Box Experience) に入る
2一般化する☐ 一般化する(G)
3シャットダウン オプション再起動
OKキャンセル
図2 Sysprep の GUI 画面(実際の画面ではなく、設定項目のポイントを示したイメージです)
No.項目設定内容
1システム クリーンアップ アクション「システムの OOBE に入る」を選ぶ。コマンドの /oobe にあたる
2一般化するイメージ化するときはチェックを入れる(画面は既定の未チェック状態)。/generalize にあたる
3シャットダウン オプションイメージ化するときは「シャットダウン」を選ぶ(画面は既定の「再起動」)。/shutdown にあたる

GUI からも実行できますが、指定できるオプションは限られます。/mode:vm などを使いたい場合は、コマンドで実行します。

Sysprep のコマンドラインオプション

Sysprep の構文は次のとおりです。

Sysprep.exe [/oobe | /audit] [/generalize] [/mode:vm] [/reboot | /shutdown | /quit] [/quiet] [/unattend:<answerfile>]
オプション動作Azure VM での使い方
/generalizeSID、イベントログ、システムの復元ポイントなどの固有情報を削除する◎ イメージ化に必須
/shutdownSysprep の完了後にシャットダウンする◎ キャプチャするときに必須
/oobe次回起動時に OOBE(初回セットアップ)から始まるよう構成する○ 推奨(GUI の「OOBE に入る」と同じ)
/mode:vm同じハイパーバイザー上の VM に展開する前提で、ハードウェアの検出を省く。初回起動が速くなる。VM の中でのみ実行できる○ 推奨
/rebootSysprep の完了後に再起動する(監査モードのテストなど)△ イメージ化では使わない
/audit監査モードで起動する。ドライバーやアプリの追加、テストに使う△ 用途しだい
/quiet確認メッセージを表示しない○ 自動化するときに使う
/quitSysprep の実行後、再起動もシャットダウンもしない△ Packer などの自動化ツール向け
/unattend:<file>無人セットアップ用の応答ファイルを指定する✕ Azure では使えない
注意
  • /mode:vm は VM の中でしか実行できません。物理 PC の VHD を準備する目的では使えません。
  • /unattend:<answerfile> は Azure の Sysprep 手順ではサポートされていません。応答ファイルでカスタマイズしたい場合は、Azure VM Image Builder などを検討してください。

参照:Sysprep のコマンド ライン オプション | Microsoft Learn

イメージ作成の手順

Sysprep で VM を一般化する

1. 元になる仮想マシンを準備する

イメージに含めたい設定(言語設定の変更、アプリケーションのインストール、Windows Update など)を済ませた Windows Server の VM を用意します。今回は VM-01(Windows Server 2022)を使います。

たとえば、Azure の既定のイメージから Windows Server の VM を作ると、言語は英語のまま展開されます。日本語化してからイメージ化しておけば、そのイメージから作る VM はすべて日本語環境になります。日本語化の手順は、次の記事を参考にしてください。

>> 参考記事:Windows Server 2022 の UI日本語化の手順確認

2. (推奨)Panther ディレクトリを削除する

過去の Sysprep のログが残っていると、Sysprep が失敗することがあります。管理者権限のコマンドプロンプトで、事前に削除しておきます(公式手順にも含まれています)。

rd /s /q C:\Windows\Panther

3. 管理者権限のコマンドプロンプトで Sysprep を実行する

C:\Windows\System32\sysprep に移動し、Sysprep を実行します。

C:\Users\hirotano> cd C:\Windows\System32\sysprep\
C:\Windows\System32\Sysprep> sysprep.exe /generalize /shutdown /oobe /mode:vm
オプションの選び方

Azure の公式手順に載っているコマンドは sysprep.exe /generalize /shutdown で、この2つは必須です。今回は、次回起動を OOBE から始める /oobe と、初回起動を速くする /mode:vm を加えています。

実行すると、Sysprep の進行状況を示すウィンドウが開きます。しばらくすると一般化が終わって VM が自動でシャットダウンし、リモートデスクトップの接続も切れます。

VM-01(リモートデスクトップ接続中)画面イメージ
1Sysprep を実行しています…クリーンアップ フェーズ Sysprep プラグインを処理しています…
⋮ (しばらく待つ)
2リモート デスクトップ接続リモート デスクトップ サービス セッションが終了しました。
図3 Sysprep 実行中から終了までの表示(実際の画面ではなく、表示内容のポイントを示したイメージです)
No.表示意味
1Sysprep を実行しています…一般化の処理中。完了するまで待つ
2リモート デスクトップ サービス セッションが終了しました。/shutdown により VM がシャットダウンされ、接続が切れた。エラーではない

4. VM が停止したことを確認する

Azure ポータルで対象の VM を開き、「概要」の状態が「停止済み」になっていることを確認します。これで VM は一般化された状態で止まっています。

Azure ポータル:VM-01 の概要画面イメージ
VM-01 ›› 概要
基本
リソース グループRG-VM
1状態停止済み
場所Japan East
サブスクリプションAzure サブスクリプション 1
図4 Sysprep 後の VM の状態(実際の画面ではなく、確認するポイントを示したイメージです)
Sysprep 後の VM は起動しない

Sysprep を実行した VM は「一般化済み」とみなされ、元に戻せません。起動してしまうと OOBE が走り、イメージの元として使えなくなります。また、Azure 上で generalized としてマークされた VM は再起動できません。元の VM を使い続けたい場合は、OS ディスクのスナップショットから VM のコピーを作り、そのコピーを一般化します。

参照:イメージを作成する前に VM のプロビジョニング解除または一般化を行う | Microsoft Learn

キャプチャしてイメージを作成する

停止した VM から、再利用できるイメージを作ります。Azure ポータルでリソースグループ「RG-VM」を開くと、VM-01 と関連リソースが並んでいます。

Azure ポータル:リソースグループ RG-VM(キャプチャ前)画面イメージ
名前種類
RG-VM-vnet仮想ネットワーク
1VM-01仮想マシン
VM-01-ipパブリック IP アドレス
VM-01-nsgネットワーク セキュリティ グループ
vm-01337ネットワーク インターフェイス
VM-01_OsDisk_1_a2d518679dec4a7da81b9047431903d4ディスク
図5 キャプチャ前のリソース一覧(実際の画面ではなく、表示のポイントを示したイメージです)

VM-01 をクリックし、上部のメニューから キャプチャ を選ぶと、「イメージの作成」画面が表示されます。設定する項目は次のとおりです。

Azure ポータル:イメージの作成画面イメージ
基本  タグ  確認および作成
プロジェクトの詳細
サブスクリプションAzure サブスクリプション 1
1リソース グループ *RG-VM
⋮ (中略)
2Azure コンピューティング ギャラリーにイメージを共有する○ はい、ギャラリーに VM イメージ バージョンとして共有します。
◉ いいえ、マネージド イメージのみをキャプチャします。
3イメージの作成後、この仮想マシンを自動的に削除します☑
4名前 *win2022-ja–image-20230212162653
5確認および作成< 前へ次: タグ >
図6 イメージの作成画面(実際の画面ではなく、設定項目のポイントを示したイメージです)
No.項目設定内容
1リソース グループイメージを置くリソースグループ。今回は作成済みの RG-VM
2ギャラリーにイメージを共有する今回は「いいえ」を選び、マネージドイメージとして作る。新しく構築する場合は Azure Compute Gallery が推奨(後述)
3この仮想マシンを自動的に削除します今回は元の VM が不要なのでチェックを入れた。ただし公式ドキュメントでは推奨されていない(下の注意を参照)
4名前OS や日付など、わかりやすい名前。今回は win2022-ja--image-20230212162653
5確認および作成入力内容の検証に進む
元の VM の自動削除について

「イメージの作成後、この仮想マシンを自動的に削除します」は、公式ドキュメントで「推奨されません」と書かれています。元の VM を残しておけば、追加の修正やイメージの作り直しがしやすくなります。本番運用ではチェックを外しておくほうが安全です。

参照:ポータルで VM のイメージを作成する | Microsoft Learn

「確認および作成」タブで検証に成功したことを確認し、「作成」をクリックします。

Azure ポータル:イメージの作成画面イメージ
1✔ 検証に成功しました
基本  タグ  確認および作成
基本
サブスクリプションAzure サブスクリプション 1
リソース グループRG-VM
地域Japan East
Azure コンピューティング ギャラリーにイメージを共有するいいえ
イメージの作成後、この仮想マシンを自動的に削除しますはい
名前win2022-ja–image-20230212162653
2作成< 前へ次へ >
図7 確認および作成の画面(実際の画面ではなく、確認するポイントを示したイメージです)

しばらくすると デプロイが完了しました と表示され、イメージの作成が終わります(デプロイ名は Microsoft.Compute-CaptureVM-… で始まります)。リソースグループを開き直すと、イメージができていることと、元の VM がなくなっていることを確認できます。

Azure ポータル:リソースグループ RG-VM(キャプチャ後)画面イメージ
名前種類
RG-VM-vnet仮想ネットワーク
VM-01-nsgネットワーク セキュリティ グループ
1win2022-ja–image-20230212162653イメージ
図8 キャプチャ後のリソース一覧(実際の画面ではなく、表示のポイントを示したイメージです)
No.表示意味
1win2022-ja–image-20230212162653(イメージ)作成したマネージドイメージ。図5 と比べると、自動削除を有効にしたため VM-01 が一覧からなくなっている。検証時の画面では、パブリック IP、ネットワークインターフェイス、OS ディスクも一覧から消えていた

作成したイメージから VM を作成する

作成したイメージを元に、新しい VM を作ります。リソースグループ内のイメージ(win2022-ja--image-20230212162653)をクリックし、上部のメニューから + VM の作成 を選びます。

「仮想マシンの作成」画面に移り、作成したイメージが選ばれた状態になっています。

Azure ポータル:仮想マシンの作成画面イメージ
基本
インスタンスの詳細
⋮ (中略)
可用性ゾーン *Zone 1
1セキュリティの種類Standard
2イメージ *win2022-ja–image-20230212162653 – x64 Gen2
図9 イメージが選ばれた VM の作成画面(実際の画面ではなく、設定項目のポイントを示したイメージです)
No.項目設定内容
1セキュリティの種類Standard。マネージドイメージは Trusted Launch に対応していないため、Trusted Launch の VM は作れない
2イメージ作成したイメージが選ばれている。x64 Gen2 のとおり、第2世代(Gen2)の VM として作成される

あとは通常の VM 作成と同じ手順で、管理者アカウント、ネットワークなどを設定してデプロイします。VM の作成手順は、次の記事を参考にしてください。

>> 参考記事:【Azure】仮想マシンの種類と作成手順(Windows Server)

新しい VM の初回起動

一般化イメージから作った VM は、初回起動時に OOBE を通り、固有の SID が新しく作られます。管理者のユーザー名とパスワードは、VM 作成画面で指定したものが新しく設定されます(イメージ元の VM の管理者情報は残りません)。

参照:一般化されたイメージ バージョンから VM を作成する | Microsoft Learn

現場で躓きやすいポイント

実務で Sysprep を扱うと、次の点でつまずくことが多いです。事前に知っておくと安心です。

1. Sysprep の実行回数には上限がある

Sysprep は、1つの Windows イメージに対して無制限に実行できるわけではありません。上限を超えると、イメージを作り直す必要があります。

OS バージョン上限回数
Windows 8.1 / Windows Server 2012 以降1001回
Windows 7 / Windows Server 2008 R23回
Windows Server 20083回

応答ファイルでプロダクトキー(ProductKey)を指定すると Windows が自動でライセンス認証され、Sysprep を回数の制限なく実行できます。

2. ストアアプリの更新後に Sysprep が失敗する

イメージの元にする VM が Microsoft Store に接続し、内蔵アプリが自動更新されると、A fatal error occurred while trying to sysprep the machine で失敗することがあります。回避策は次のどちらかです。

  • イメージ作成用の VM は、インターネットに接続しない監査モードで構成する
  • 対象の Appx パッケージを次のコマンドで削除してから Sysprep を実行する
# 該当ユーザーで実行されているパッケージを削除
Remove-AppxPackage -Package <packagefullname>

# プロビジョニングを削除
Remove-AppxProvisionedPackage -Online -PackageName <packagefullname>

3. Windows Server 2025 の日本語化で Sysprep が失敗する

Azure Marketplace の Windows Server 2025(英語版)を、従来の手順(コントロールパネルから言語パックを追加)で日本語化すると、Sysprep が失敗することが報告されています。回避策は、PowerShell の Install-Language で日本語を追加することです。

# 言語パックのインストール
Install-Language ja-jp

Install-Language は、言語のコンポーネントをダウンロードしてインストールするコマンドです。Windows Server 2025、Windows 11、Windows 10 22H2 以降で使え、Windows Server 2022 以前では使えません。

4. タスクスケジューラや PsExec 経由では実行できない

公式ドキュメントに「システム アカウントのコンテキストで Sysprep を実行することはできません」と書かれています。タスクスケジューラや PsExec で SYSTEM として実行する方法はサポートされません。自動化したい場合は、ログオンした管理者のセッションで実行するか、Azure VM Image Builder のような専用のツールを使います。

5. ローカル管理者のパスワードに注意する

Sysprep や OOBE の前にユーザーアカウントへ強力なパスワードを設定していないと、展開後にログオンできなくなる可能性があります。Azure VM では「VM の作成」時に管理者パスワードを設定し直すため通常は影響しませんが、ローカルで作った管理者ユーザーがある場合は注意してください。

トラブルシューティング

まずログを確認する

Sysprep が A fatal error occurred while trying to sysprep the machine などで失敗したら、原因を探すために次のログを確認します。

ログファイル内容
C:\Windows\System32\Sysprep\Panther\setupact.logSysprep の動作ログ
C:\Windows\System32\Sysprep\Panther\setuperr.logエラーログ
C:\Windows\Panther\setupact.logOS セットアップ全体のログ
注意

Sysprep を実行し直すと setupact.log はクリアされます。エラーが出たら、先に Panther フォルダの中身をバックアップしてから対応してください。

症状別の原因と対応

症状主な原因対応
setuperr.log に RunExternalDlls:Not running DLLsSysprep の内部状態が壊れているイメージを作り直す
ストアアプリ関連のエラー内蔵アプリの更新・削除の不整合「現場で躓きやすいポイント」の 2. を参照
BitLocker 関連のエラードライブの暗号化が有効BitLocker を無効にしてから実行し直す
ライセンスの Rearm 回数超過(Windows 7 系)Sysprep を3回を超えて実行したイメージを作り直すか、応答ファイルで <SkipRearm> を設定する
作った VM が起動しないOS が Sysprep の処理を完了できていない(ブート診断に下記のメッセージが出る)この VM は復旧できない。バックアップから復元するか、一般化イメージを作り直す
作った VM が OOBE で止まるCD/DVD-ROM が無効になっている元の VM で CD/DVD-ROM を有効にするコマンド(前提条件を参照)を実行してから、Sysprep とイメージ作成をやり直す

「作った VM が起動しない」場合、ブート診断のスクリーンショットには次のメッセージが表示されます。

Windows could not finish configuring the system. Setup is starting services.

マネージドイメージと Azure Compute Gallery の違い

イメージの保存先は2種類あります。今回作ったマネージドイメージはレガシ(従来)の方式で、新しく構築する場合は Azure Compute Gallery が推奨されています。Arm64、Trusted Launch、Confidential VM などの新機能は、Azure Compute Gallery でのみサポートされます。

観点マネージドイメージ(レガシ)Azure Compute Gallery(推奨)
位置付けレガシ(公式は移行を推奨)現行。新機能の対応はこちらのみ
イメージの種類一般化のみ一般化・特殊化の両方
VM の世代Gen1・Gen2 の両方(今回の検証でも Gen2)Gen1・Gen2 の両方
リージョン展開同一リージョン内のみ他のリージョンへレプリケーションできる
バージョン管理×◎(メジャー.マイナー.パッチ形式)
共有範囲同一サブスクリプション内サブスクリプションやテナントをまたいで共有できる(RBAC)
新機能(Trusted Launch、Confidential VM、Arm64 など)× 非対応◎ 対応
大規模な展開△◎ レプリカ機能あり
向いている用途開発・検証・小規模本番・組織横断・大規模

既存のマネージドイメージを移行する

すでにマネージドイメージがある場合は、それをソースにして Azure Compute Gallery のイメージバージョンを作れます。ポータルでは、マネージドイメージの画面のメニューにある VM イメージに複製する(Clone to a VM image)から進めます。

  1. Azure Compute Gallery を作成する
  2. イメージ定義(Image definition)を作成する
  3. 既存のマネージドイメージをソースにして、イメージバージョンを作成する

まとめ

Azure で Windows VM のカスタムイメージを作る手順を、Sysprep の仕組み、オプション、前提条件、つまずきやすい点、トラブルシューティングまで含めて確認しました。押さえておきたい点は次のとおりです。

項目ポイント
Sysprep の役割Windows から固有情報を削除し、再利用できるイメージの元を作る
事前確認CD/DVD-ROM、暗号化、ドメイン、サーバーロール、MDM、アプリの対応を必ず確認する
実行コマンド/generalize /shutdown は必須。今回は /oobe /mode:vm も付けて実行した
実行後Sysprep 後の VM は起動しない。事前に C:\Windows\Panther を削除しておくと失敗を防ぎやすい
ログC:\Windows\System32\Sysprep\Panther\ の setupact.log/setuperr.log を見る
保存先新しく構築するなら Azure Compute Gallery(マネージドイメージはレガシ)
Windows Server 2025日本語化は Install-Language ja-jp を使う

次のステップとして、PowerShell や Azure CLI による自動化や、Azure VM Image Builder によるイメージ作成の自動化も試すと、運用がさらに楽になります。

コメント