http://win-enikki.blogspot.jp/2013/07/dism.html
実際にイメージキャプチャする場合には、
以前はImageX.exeとよばれるツールを利用する必要があったのだけれど、
Windows8からは標準で組み込まれているDISMコマンドからキャプチャおよび展開することが
できるようになった。
イメージ管理のコマンド ライン オプション
http://technet.microsoft.com/ja-jp/library/hh825258.aspx
Windows8ベースのWindowsPE4.0でも同様にDismコマンドを利用することができる。
WindowsPEを作成し、キャプチャ・展開するまでの手順をまとめてみる。
(ここからは自環境で行った検証なので、
本番環境で利用等で利用し、うまく行かなかった場合でも責任をとることはできません。
参考資料として、各自検証していただければとおもいます。)
■アセスメント&デプロイメントキットからWindowsPEを生成する
Windows(R) 8 用 Windows アセスメント & デプロイメント キット(x64)
http://www.microsoft.com/ja-jp/download/details.aspx?id=30652
Windows8用でも、Windows7OSへインストール、生成することは可能。
インストールウィザードにて、[DeploymentTools],[Windows Preinstallation Environment(Windows PE)]にチェックされていることを確認し、続行。
インストール完了後、[展開およびイメージングツール環境]を管理者として起動
以下のコマンドを実行し、WindowsPEデータを取り出す。
copype amd64 c:\winpe_amd64コピー先にWindowsPEのデータが入ったフォルダが生成される
■WindowsPEシステムロケール設定
WindowsPEもWimイメージとして存在している。
WIMイメージをマウントし、PEの設定やファイルの編集などを行う。
dism /mount-image /imagefile:"c:\winpe_amd64\media\sources\boot.wim" /index:1 /mountdir:"c:\winpe_amd64\mount"
c:\winpe_amd64\mount配下にWindowsPEのWIMイメージデータをマウントした。
ファイル等のデータを追加したい場合には、ここへ直接データをコピーすると良い。
WindowsPEの言語設定確認
デフォルトだと、米国設定になっているので、日本設定にする。
言語パックインストール
dism /image:"c:\winpe_amd64\mount" /add-package /packagepath:"C:\Program Files (x86)\Windows Kits\8.0\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\ja-jp\lp.cab"フォントインストール
dism /image:"c:\winpe_amd64\mount" /add-package /packagepath:"C:\Program Files (x86)\Windows Kits\8.0\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-FontSupport-JA-JP.cab"既定言語変更
dism /image:"c:\winpe_amd64\mount" /set-allintl:ja-jpキーボードの配列を日本語キーボード(106)に変更
dism /image:"c:\winpe_amd64\mount" /Set-UserLocale:ja-JP /set-InputLocale:0411:00000411タイムゾーンをTokyoに変更
dism /image:"c:\winpe_amd64\mount" /set-LayeredDriver:6
dism /image:"c:\winpe_amd64\mount" /set-TimeZone:"Tokyo Standard Time"日本語環境になったことを確認。
dism /image:"c:\winpe_amd64\mount" /get-intl■ネットワーク設定バッチの組み込み
WindowsPE適用先の環境がDHCPサーバがある場合には特に必要ないのだけれど、
固定でIPアドレスを指定する場合にはnetshコマンドを使う。
もっと簡単にするため、固定IP設定を行うバッチをあらかじめWindowsPEへ組み込んでおく。(netsetup.bat)
尚、ネットワークドライバはWindows8ベースのPEではだいたい組み込まれていることが多いが、
ない場合にはこちらもドライバを組み込んでおく必要がある。
※netsetup.bat
@echo off rem ------------------------------------------------- rem IPアドレスの設定BAT rem http://win-enikki.blogspot.jp/ rem ------------------------------------------------- cls echo. echo. :inst set Idx=nul echo ネットワークの一覧を表示します。 netsh interface ip show interface set /p Idx=設定したいネットワークの Idx の値を入力: :Menu echo ------------------------------------------------ echo □■ Menu ■□ echo ------------------------------------------------ echo 1:ネットワーク設定変更 echo 2:インデックス番号の再選択 echo 3:IPアドレスの確認 echo 4:構文確認 echo q:終了 echo ------------------------------------------------ rem 判定キーの初期化 set Slt=nul rem 選択値の入力を求める set /p Slt=入力: rem 条件分岐 if '%Slt%'=='1' goto Set_1 if '%Slt%'=='2' goto inst if '%Slt%'=='3' goto Set_3 if '%Slt%'=='4' goto Set_4 if '%Slt%'=='q' goto :eof rem 指定文字以外の入力がある場合は、メニューに戻る goto Menu :Set_1 rem ---------------------------------------------------- rem ■IPアドレスを固定で取得 rem ---------------------------------------------------- rem IPアドレス&DNSの設定 echo ローカルエリア接続に設定するIPアドレスを入力してください set /p Ipadd=入力: echo サブネットマスクを入力してください set /p Subnet=入力: echo デフォルトゲートウェイを入力してください set /p Dfgy=入力: echo DNS を入力してください echo 例:10.2.129.210 set /p DnsSv1=入力: set yorn=nul set /p yorn=設定します。(y or n): rem 条件分岐 if '%yorn%'=='y' goto Main if '%yorn%'=='n' goto Menu goto Menu :Main echo しばらくお待ちください。 netsh interface ip set dnsserver %Idx% source=static addr=%DnsSv1% register=both netsh interface ip set address %Idx% source=static %Ipadd% %Subnet% %Dfgy% echo ネットワークを設定しました。 echo Menuに戻ります。キーを押してください。 pause>nul rem 処理終了 goto :Menu :Set_4 rem ---------------------------------------------------- rem ■インデックス番号の確認 rem ---------------------------------------------------- echo 手動設定時の構文例 echo netsh interface ip set dnsserver [インデックス番号] static [DNSサーバのIPアドレス] none echo netsh interface ip set address [インデックス番号] static [IPアドレス] [サブネットマスク] [デフォルトゲートウェイ] pause rem 処理終了 goto :menu :Set_3 rem --------------------------------------------------------- rem ■IPアドレスの確認 rem --------------------------------------------------------- rem IPアドレスなどを表示させる ipconfig /all echo. pause rem 処理終了 goto :Menunetsetup.batを以下のフォルダに保存
C:\winpe_amd64\mount\Windows\System32続いてキャプチャ・展開する為のバッチも用意する。(ImgCap.bat)
各コマンドの内容は以下を参考
DISM を使ってイメージを適用する方法
http://technet.microsoft.com/ja-jp/library/hh824910.aspx
尚、今回のバッチでのイメージ展開時のパーティション再作成は、
ディスクの1本目をフォーマットし、
システムパーティション(300MB)・リカバリー領域(3000MB)・ブートパーティション(残りのデータ領域)
としている。
パーティション構成・指定先を変えたい場合は、
CreatePartitions.txtおよび DISM /apply-image 部分の指定先を変更すること。
また、システムパーティションに対し、UEFIではなくBIOS形式の場合は、BCDBOOT部分を変更すること。
ImgCap.bat
@echo off rem ------------------------------------------------- rem DISMキャプチャ・展開 rem http://win-enikki.blogspot.jp/ rem ------------------------------------------------- cls :Menu echo ------------------------------------------------ echo □■ Menu ■□ echo ------------------------------------------------ echo 1:イメージフォルダマウント echo 2:イメージ新規取得 echo 3:イメージ追記取得 echo 4:イメージ展開(Cドライブ専用) echo q:終了 echo ------------------------------------------------ rem 判定キーの初期化 set Slt=nul rem 選択値の入力を求める set /p Slt=入力: rem 条件分岐 if '%Slt%'=='1' goto Set_1 if '%Slt%'=='2' goto Set_2 if '%Slt%'=='3' goto Set_3 if '%Slt%'=='4' goto Set_4 if '%Slt%'=='q' goto :eof rem 指定文字以外の入力がある場合は、メニューに戻る goto Menu :Set_1 rem ---------------------------------------------------- rem ■ネットワークフォルダマウント rem ---------------------------------------------------- echo "イメージデータ保存箇所を入力してください。\\<IPアドレス>\<共有フォルダ>" set /p Ipadd=入力: net use n: %Ipadd% dir n: echo 共有フォルダ設定をNドライブとしてマウントしました。 echo Menuに戻ります。キーを押してください。 pause>nul rem 処理終了 goto :Menu :Set_2 rem ---------------------------------------------------- rem ■イメージ新規取得 rem ---------------------------------------------------- echo 以下のフォルダへ作成するイメージファイル名を記入してください。 echo (例) sample.wim echo ; dir n:\ set /p CapImg=入力: echo ; echo 取得するイメージのドライブ名を記入してください echo (例) C:\ set /p CapDrv=入力: echo ; echo 取得するイメージの説明を記入してください echo (例) サンプルイメージ set /p CapDesc=入力: echo ; echo キャプチャ名: %Capimg% echo キャプチャドライブ: %CapDrv% echo キャプチャ保存先: %CapDesc% set yorn=nul set /p yorn=上記内容で取得します。(y or n): if '%yorn%'=='y' goto Main2 if '%yorn%'=='n' goto Menu goto Menu :Main2 echo キャプチャ中です。 Dism /Capture-Image /ImageFile:n:%Capimg% /CaptureDir:%CapDrv% /Name:"%CapDesc%" echo キャプチャ終了しました。 echo メニューに戻ります。 pause>nul goto :Menu :Set_3 rem ---------------------------------------------------- rem ■イメージ追記取得 rem ---------------------------------------------------- echo 追記するイメージファイル名を記入してください。 echo (例) sample.wim echo ; dir n:\ set /p CapImg=入力: echo ; echo 取得するイメージのドライブ名を記入してください echo (例) C:\ set /p CapDrv=入力: echo ; echo 取得するイメージの説明を記入してください echo (例) サンプルイメージ set /p CapDesc=入力: echo ; echo キャプチャ名: %Capimg% echo キャプチャファイルデータ Dism /Get-ImageInfo /ImageFile:n:\%Capimg% echo キャプチャドライブ: %CapDrv% echo キャプチャ保存先: %CapDesc% set yorn=nul set /p yorn=上記内容で取得します。(y or n): if '%yorn%'=='y' goto Main2 if '%yorn%'=='n' goto Menu goto Menu :Main2 echo キャプチャ中です。 Dism /Append-Image /ImageFile:n:%Capimg% /CaptureDir:%CapDrv% /Name:"%CapDesc%" echo キャプチャ終了しました。 echo メニューに戻ります。 pause>nul goto :Menu :Set_4 rem ---------------------------------------------------- rem ■イメージ展開(Cドライブ専用) rem ---------------------------------------------------- echo 以下のデータから適用するイメージファイル名を記入してください dir n:\ set /p ApImg=入力: rem dir n:\%Apimg% Dism /Get-ImageInfo /ImageFile:n:\%Apimg% echo 適用するIndexを指定してください。 set /p ApIndex=入力: Dism /Get-ImageInfo /ImageFile:n:\%Apimg% /Index:%ApIndex% set yorn=nul set /p yorn=上記のイメージを展開します。(y or n): if '%yorn%'=='y' goto Main4 if '%yorn%'=='n' goto Menu goto Menu :Main4 echo パーティション作成しています。 diskpart /s CreatePartitions.txt echo イメージ展開中です。 Dism /apply-image /imagefile:N:\%Apimg% /index:%ApIndex% /ApplyDir:W:\ echo ブートパーティション適用中です。 rem ブートがUEFIではなくBIOSであれば、最後をBIOSに変更する BCDBOOT W:\Windows /l ja-jp /s S: /f UEFI echo 作業完了しました。 echo 再起動してください。メニューに戻ります。 pause>nul goto :Menu
バッチ内で利用している、diskpartコマンドの呼び出しの為、以下のテキストを用意
CreatePartitions.txt
-------------------------------------
select disk 0
clean
create partition primary size=3000 id=27
format quick fs=ntfs label="Recovery"
assign letter="R"
create partition primary size=300
format quick fs=ntfs label="System"
assign letter="S"
active
create partition primary
format quick fs=ntfs label="Windows"
assign letter="W"
-------------------------------------
ImgCap.batおよびCreatePartition.txtを 以下のフォルダに保存C:\winpe_amd64\mount\Windows\System32
■コミット・USBへ保存 データの準備が完了したらデータをコミットし、マウント解除する
dism /unmount-image /mountdir:"c:\winpe_amd64\mount" /commit最後に、USBへ書き出し、USBから起動できるようにする。
Makewinpemedia /ufd C:\winpe_amd64 <USBドライブ>
これでキャプチャ・展開するためのWindowsPE USBができた。
■検証
実際にネットワークの適用、イメージキャプチャ、展開を検証機にて試してみた。
検証機にて
USBメモリブートし、WindowsPEで起動、netsetup.bat を実行し、固定IPアドレスを適用した。
次にドライブを指定してWIMイメージファイルを作成する。
キャプチャドライブは、どのドライブになるかWindowsPE上で確認しておく必要がある。(尚、イメージ取得時間は下の画像では多少カットしてます)
作成してあるWIMファイルに追記する格好でイメージキャプチャをしてみる。
上の画像をみてわかる通り、WIMファイル上では3GBほどであるが、
実際のデータ容量は12GBほどとなっており、キャプチャ時に圧縮が行われている。
また、今回は同じデータをWIMファイルに追加しているため、WIMファイルの容量自体はほとんど増加していないこともわかる。
最後にイメージ展開をしてみる。
前述の通り、展開においてはパーティションの切り方や、システムパーティションの種類によって
設定変更が必要となるため、注意すること。
その後、再起動すると正常に起動することを確認できた。
以上で、DISMコマンドを利用してイメージキャプチャ、展開を行うことができた。
機会あれば、WDS展開サービスに関しても 少しいじってみたいなぁと思う。
スポンサーリンク