Windows PEでバックアップ・リストア(1)
以前にWindows PEを簡単に作れるというフリーのツールを記事にしましたが、とある事情によりWindowsのイメージバックアップをすることになりました。
これもフリーのツールは探せばいくつでもあるのですが、そこは一から作ってみようと思った次第です。
バッチでもいいのですが、せっかくですからPowerShellで作っていくことにします。不明点はAIの意見を参考にして組み立てていきました。
まずは、Windows PEを作成するにあたって、Windows ADKとWindows Pre-Installアドオンを以下リンクよりダウンロードし、インストールします。一応、最新のものがいいだろうということで、Windows11対応のものをインストールしています。
Windows ADKインストール時にいろいろオプションが選べるのですが、Deployment toolのみでかまいません。もちろんそのままデフォルトでも構いません。
さて、インストールが終わったら、作業用フォルダを作成します。ここからはコマンドラインで操作しますが、いわゆるコマンドプロンプトではなく、インストール時にできた展開とイメージングツールを管理者として実行したもので操作していきます。

ここでは一例としてE:\WinPEを作業用フォルダとし、PowerShellと日本語環境を自動的に組み込んでISOを作るバッチを作りました。
@echo off
:: 変数設定
set ADK=C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit
set WINPE=C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment
set WORK=E:\WinPE
echo.
echo 古い作業フォルダ削除
rmdir /s /q %WORK%
echo.
echo WinPE 作成開始
call "%ADK%\Deployment Tools\DandISetEnv.bat"
call copype amd64 %WORK%
echo.
echo WinPE マウント
Dism /Mount-Image /ImageFile:%WORK%\media\sources\boot.wim /index:1 /MountDir:%WORK%\mount
echo.
echo 日本語フォントパッケージ追加
dism /Add-Package /Image:%WORK%\mount /PackagePath:"%WINPE%\amd64\WinPE_OCs\ja-jp\lp.cab"
dism /Add-Package /Image:%WORK%\mount /PackagePath:"%WINPE%\amd64\WinPE_OCs\WinPE-FontSupport-JA-JP.cab"
echo.
echo PowerShell 関連追加
dism /Add-Package /Image:%WORK%\mount /PackagePath:"%WINPE%\amd64\WinPE_OCs\WinPE-WMI.cab"
dism /Add-Package /Image:%WORK%\mount /PackagePath:"%WINPE%\amd64\WinPE_OCs\ja-jp\WinPE-WMI_ja-jp.cab"
dism /Add-Package /Image:%WORK%\mount /PackagePath:"%WINPE%\amd64\WinPE_OCs\WinPE-NetFX.cab"
dism /Add-Package /Image:%WORK%\mount /PackagePath:"%WINPE%\amd64\WinPE_OCs\ja-jp\WinPE-NetFx_ja-jp.cab"
dism /Add-Package /Image:%WORK%\mount /PackagePath:"%WINPE%\amd64\WinPE_OCs\WinPE-Scripting.cab"
dism /Add-Package /Image:%WORK%\mount /PackagePath:"%WINPE%\amd64\WinPE_OCs\ja-jp\WinPE-Scripting_ja-jp.cab"
dism /Add-Package /Image:%WORK%\mount /PackagePath:"%WINPE%\amd64\WinPE_OCs\WinPE-PowerShell.cab"
dism /Add-Package /Image:%WORK%\mount /PackagePath:"%WINPE%\amd64\WinPE_OCs\ja-jp\WinPE-PowerShell_ja-jp.cab"
dism /Add-Package /Image:%WORK%\mount /PackagePath:"%WINPE%\amd64\WinPE_OCs\WinPE-DismCmdlets.cab"
dism /Add-Package /Image:%WORK%\mount /PackagePath:"%WINPE%\amd64\WinPE_OCs\ja-jp\WinPE-DismCmdlets_ja-jp.cab"
dism /Add-Package /Image:%WORK%\mount /PackagePath:"%WINPE%\amd64\WinPE_OCs\WinPE-EnhancedStorage.cab"
dism /Add-Package /Image:%WORK%\mount /PackagePath:"%WINPE%\amd64\WinPE_OCs\ja-jp\WinPE-EnhancedStorage_ja-jp.cab"
dism /Add-Package /Image:%WORK%\mount /PackagePath:"%WINPE%\amd64\WinPE_OCs\WinPE-StorageWMI.cab"
dism /Add-Package /Image:%WORK%\mount /PackagePath:"%WINPE%\amd64\WinPE_OCs\ja-jp\WinPE-StorageWMI_ja-jp.cab"
dism /Add-Package /Image:%WORK%\mount /PackagePath:"%WINPE%\amd64\WinPE_OCs\WinPE-HTA.cab"
dism /Add-Package /Image:%WORK%\mount /PackagePath:"%WINPE%\amd64\WinPE_OCs\ja-jp\WinPE-HTA_ja-jp.cab"
dism /Add-Package /Image:%WORK%\mount /PackagePath:"%WINPE%\amd64\WinPE_OCs\WinPE-SecureStartup.cab"
dism /Add-Package /Image:%WORK%\mount /PackagePath:"%WINPE%\amd64\WinPE_OCs\ja-jp\WinPE-SecureStartup_ja-jp.cab"
dism /Add-Package /Image:%WORK%\mount /PackagePath:"%WINPE%\amd64\WinPE_OCs\WinPE-WDS-Tools.cab"
dism /Add-Package /Image:%WORK%\mount /PackagePath:"%WINPE%\amd64\WinPE_OCs\ja-jp\WinPE-WDS-Tools_ja-jp.cab"
echo. ロケールとUIを日本語にする
dism /Image:%WORK%\mount /Set-Allintl:ja-jp
dism /Image:%WORK%\mount /Set-UserLocale:ja-JP /Set-InputLocale:0411:00000411
echo. キーボードを日本語配列にする
dism /Image:%WORK%\mount /Set-LayeredDriver:6
echo. タイムゾーンを東京にする
dism /Image:%WORK%\mount /set-TimeZone:"Tokyo Standard Time"
echo. startnet.cmd作成
echo wpeinit > "%WORK%\mount\\Windows\System32\startnet.cmd"
echo. ---------------------
echo. startnet.cmdの中身
type "%WORK%\mount\Windows\System32\startnet.cmd"
echo. ---------------------
echo.
echo アンマウント
Dism /Unmount-Image /MountDir:%WORK%\mount /Commit
echo.
echo ISO 作成
call MakeWinPEMedia /ISO %WORK% E:\WinPE.iso
echo 完了
pause
これで、WindowsPEが作成できます。次回からこのWindowsPEをベースにしてバックアップ・リストアのコードを埋め込んでいきます。なお、三行目の
set WORK=E:\WinPEのE:\WinPEを適宜、各自環境に合わせていただくことをお忘れなく。あと最後の方の
call MakeWinPEMedia /ISO %WORK% E:\WinPE.isoのISOファイル作成先の変更もお願いします。


