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ファイル作成先の変更もお願いします。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です