読む前にこの記事のポイントを音声で確認できます。この音声は本記事をもとにAIツール(NotebookLM)で自動生成したもので、発音や言い回しが不自然な箇所や、内容の誤りが含まれる可能性があります。理解の補助としてご利用ください。
Azure で同じ設定の Windows 仮想マシンを何台も作りたいときは、設定済みの VM から Sysprep でカスタムイメージを作っておくと便利です。Sysprep は Windows から PC 固有の情報を削除し、再利用できる「一般化イメージ」の元を作るツールです。
ただし Sysprep には前提条件や落とし穴があり、知らずに進めるとイメージ作成に失敗したり、展開した VM が起動しなかったりします。この記事では、公式ドキュメントを参照しながら、イメージを確実に作るための手順と注意点をまとめます。
- 前提条件を確認し、Sysprep で VM を一般化する
- 一般化した VM をキャプチャしてイメージを作成する
- 作成したイメージから新しい VM を作成する
Sysprep とは
Sysprep(System Preparation Tool/システム準備ツール)は、Windows のインストールから PC 固有の情報(セキュリティ識別子(SID)、イベントログ、システムの復元ポイントなど)を削除し、別の PC にそのまま展開できる状態にするツールです。この処理を「一般化(generalize)」と呼びます。
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 ポータルは更新が多く、項目の並びや表記は変わることがあります。
| 1システム クリーンアップ アクション | システムの OOBE (Out-of-Box Experience) に入る |
| 2一般化する | ☐ 一般化する(G) |
| 3シャットダウン オプション | 再起動 |
| 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 での使い方 |
|---|---|---|
| /generalize | SID、イベントログ、システムの復元ポイントなどの固有情報を削除する | ◎ イメージ化に必須 |
| /shutdown | Sysprep の完了後にシャットダウンする | ◎ キャプチャするときに必須 |
| /oobe | 次回起動時に OOBE(初回セットアップ)から始まるよう構成する | ○ 推奨(GUI の「OOBE に入る」と同じ) |
| /mode:vm | 同じハイパーバイザー上の VM に展開する前提で、ハードウェアの検出を省く。初回起動が速くなる。VM の中でのみ実行できる | ○ 推奨 |
| /reboot | Sysprep の完了後に再起動する(監査モードのテストなど) | △ イメージ化では使わない |
| /audit | 監査モードで起動する。ドライバーやアプリの追加、テストに使う | △ 用途しだい |
| /quiet | 確認メッセージを表示しない | ○ 自動化するときに使う |
| /quit | Sysprep の実行後、再起動もシャットダウンもしない | △ Packer などの自動化ツール向け |
| /unattend:<file> | 無人セットアップ用の応答ファイルを指定する | ✕ Azure では使えない |
/mode:vmは VM の中でしか実行できません。物理 PC の VHD を準備する目的では使えません。/unattend:<answerfile>は Azure の Sysprep 手順ではサポートされていません。応答ファイルでカスタマイズしたい場合は、Azure VM Image Builder などを検討してください。
イメージ作成の手順
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 が自動でシャットダウンし、リモートデスクトップの接続も切れます。
| 1Sysprep を実行しています… | クリーンアップ フェーズ Sysprep プラグインを処理しています… |
| ⋮ (しばらく待つ) | |
| 2リモート デスクトップ接続 | リモート デスクトップ サービス セッションが終了しました。 |
| No. | 表示 | 意味 |
|---|---|---|
| 1 | Sysprep を実行しています… | 一般化の処理中。完了するまで待つ |
| 2 | リモート デスクトップ サービス セッションが終了しました。 | /shutdown により VM がシャットダウンされ、接続が切れた。エラーではない |
4. VM が停止したことを確認する
Azure ポータルで対象の VM を開き、「概要」の状態が「停止済み」になっていることを確認します。これで VM は一般化された状態で止まっています。
| リソース グループ | RG-VM |
| 1状態 | 停止済み |
| 場所 | Japan East |
| サブスクリプション | Azure サブスクリプション 1 |
Sysprep を実行した VM は「一般化済み」とみなされ、元に戻せません。起動してしまうと OOBE が走り、イメージの元として使えなくなります。また、Azure 上で generalized としてマークされた VM は再起動できません。元の VM を使い続けたい場合は、OS ディスクのスナップショットから VM のコピーを作り、そのコピーを一般化します。
キャプチャしてイメージを作成する
停止した VM から、再利用できるイメージを作ります。Azure ポータルでリソースグループ「RG-VM」を開くと、VM-01 と関連リソースが並んでいます。
| 名前 | 種類 |
|---|---|
| RG-VM-vnet | 仮想ネットワーク |
| 1VM-01 | 仮想マシン |
| VM-01-ip | パブリック IP アドレス |
| VM-01-nsg | ネットワーク セキュリティ グループ |
| vm-01337 | ネットワーク インターフェイス |
| VM-01_OsDisk_1_a2d518679dec4a7da81b9047431903d4 | ディスク |
VM-01 をクリックし、上部のメニューから キャプチャ を選ぶと、「イメージの作成」画面が表示されます。設定する項目は次のとおりです。
| サブスクリプション | Azure サブスクリプション 1 |
| 1リソース グループ * | RG-VM |
| ⋮ (中略) | |
| 2Azure コンピューティング ギャラリーにイメージを共有する | ○ はい、ギャラリーに VM イメージ バージョンとして共有します。 ◉ いいえ、マネージド イメージのみをキャプチャします。 |
| 3イメージの作成後、この仮想マシンを自動的に削除します | ☑ |
| 4名前 * | win2022-ja–image-20230212162653 |
| No. | 項目 | 設定内容 |
|---|---|---|
| 1 | リソース グループ | イメージを置くリソースグループ。今回は作成済みの RG-VM |
| 2 | ギャラリーにイメージを共有する | 今回は「いいえ」を選び、マネージドイメージとして作る。新しく構築する場合は Azure Compute Gallery が推奨(後述) |
| 3 | この仮想マシンを自動的に削除します | 今回は元の VM が不要なのでチェックを入れた。ただし公式ドキュメントでは推奨されていない(下の注意を参照) |
| 4 | 名前 | OS や日付など、わかりやすい名前。今回は win2022-ja--image-20230212162653 |
| 5 | 確認および作成 | 入力内容の検証に進む |
「イメージの作成後、この仮想マシンを自動的に削除します」は、公式ドキュメントで「推奨されません」と書かれています。元の VM を残しておけば、追加の修正やイメージの作り直しがしやすくなります。本番運用ではチェックを外しておくほうが安全です。
「確認および作成」タブで検証に成功したことを確認し、「作成」をクリックします。
| サブスクリプション | Azure サブスクリプション 1 |
| リソース グループ | RG-VM |
| 地域 | Japan East |
| Azure コンピューティング ギャラリーにイメージを共有する | いいえ |
| イメージの作成後、この仮想マシンを自動的に削除します | はい |
| 名前 | win2022-ja–image-20230212162653 |
しばらくすると デプロイが完了しました と表示され、イメージの作成が終わります(デプロイ名は Microsoft.Compute-CaptureVM-… で始まります)。リソースグループを開き直すと、イメージができていることと、元の VM がなくなっていることを確認できます。
| 名前 | 種類 |
|---|---|
| RG-VM-vnet | 仮想ネットワーク |
| VM-01-nsg | ネットワーク セキュリティ グループ |
| 1win2022-ja–image-20230212162653 | イメージ |
| No. | 表示 | 意味 |
|---|---|---|
| 1 | win2022-ja–image-20230212162653(イメージ) | 作成したマネージドイメージ。図5 と比べると、自動削除を有効にしたため VM-01 が一覧からなくなっている。検証時の画面では、パブリック IP、ネットワークインターフェイス、OS ディスクも一覧から消えていた |
作成したイメージから VM を作成する
作成したイメージを元に、新しい VM を作ります。リソースグループ内のイメージ(win2022-ja--image-20230212162653)をクリックし、上部のメニューから + VM の作成 を選びます。
「仮想マシンの作成」画面に移り、作成したイメージが選ばれた状態になっています。
| ⋮ (中略) | |
| 可用性ゾーン * | Zone 1 |
| 1セキュリティの種類 | Standard |
| 2イメージ * | win2022-ja–image-20230212162653 – x64 Gen2 |
| No. | 項目 | 設定内容 |
|---|---|---|
| 1 | セキュリティの種類 | Standard。マネージドイメージは Trusted Launch に対応していないため、Trusted Launch の VM は作れない |
| 2 | イメージ | 作成したイメージが選ばれている。x64 Gen2 のとおり、第2世代(Gen2)の VM として作成される |
あとは通常の VM 作成と同じ手順で、管理者アカウント、ネットワークなどを設定してデプロイします。VM の作成手順は、次の記事を参考にしてください。
>> 参考記事:【Azure】仮想マシンの種類と作成手順(Windows Server)
一般化イメージから作った VM は、初回起動時に OOBE を通り、固有の SID が新しく作られます。管理者のユーザー名とパスワードは、VM 作成画面で指定したものが新しく設定されます(イメージ元の VM の管理者情報は残りません)。
現場で躓きやすいポイント
実務で Sysprep を扱うと、次の点でつまずくことが多いです。事前に知っておくと安心です。
1. Sysprep の実行回数には上限がある
Sysprep は、1つの Windows イメージに対して無制限に実行できるわけではありません。上限を超えると、イメージを作り直す必要があります。
| OS バージョン | 上限回数 |
|---|---|
| Windows 8.1 / Windows Server 2012 以降 | 1001回 |
| Windows 7 / Windows Server 2008 R2 | 3回 |
| Windows Server 2008 | 3回 |
応答ファイルでプロダクトキー(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.log | Sysprep の動作ログ |
| C:\Windows\System32\Sysprep\Panther\setuperr.log | エラーログ |
| C:\Windows\Panther\setupact.log | OS セットアップ全体のログ |
Sysprep を実行し直すと setupact.log はクリアされます。エラーが出たら、先に Panther フォルダの中身をバックアップしてから対応してください。
症状別の原因と対応
| 症状 | 主な原因 | 対応 |
|---|---|---|
setuperr.log に RunExternalDlls:Not running DLLs | Sysprep の内部状態が壊れている | イメージを作り直す |
| ストアアプリ関連のエラー | 内蔵アプリの更新・削除の不整合 | 「現場で躓きやすいポイント」の 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)から進めます。
- Azure Compute Gallery を作成する
- イメージ定義(Image definition)を作成する
- 既存のマネージドイメージをソースにして、イメージバージョンを作成する
まとめ
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 によるイメージ作成の自動化も試すと、運用がさらに楽になります。
コメント