PXEブートしたGhostを使ってWin8.1を大量展開する(後編)

PXEブートしたGhostを使ってWin8.1を大量展開する(後編)

あとでゆっくり書こう。そう思ってたら結構忘れてきてる始末。

前回の続きですが・・・

  1. PXEによるGhostブート環境を作成
  2. マスターPCをSysprepして展開イメージを作成
  3. クローニングされたOSに必要な個別設定
  4. Ghostにて各PCへイメージを展開

前編(PXEブートしたGhostを使ってWin8.1を大量展開する(前編)| 徒労日記)にてi.とii.を実施し、展開の環境作成をしました。後編はiii.とiv.の工程を逆に書いたほうが流れがいいので、Ghostの作業は最後しました。ご了承下さい。

iii.クローニング後のOS個別設定

依頼元からマスターPCを受け取り、ii.でsysprepをしたらまずレビューを行います。1台をテスト展開し、実施した設定が正しく引き継がれているか、予想外の設定に変わっていないかなど依頼元と問題点を確認しておきます。

今回は変更されてしまう事がわかっているOS設定項目のうち、

  1. WindowsUpdateの適用設定
  2. アクションセンターのチェックボックス
  3. タスクバーのストアアイコン削除

の再設定について、UWSCという操作自動化ツールを使って行いました。

UWSC


・ マウスとキーボード入力を記録して再生する事ができます。 (スクリプト形式ですので自由に編集する事ができます)
・ 強力なスクリプト言語によりアプリの操作ができます。 (COMオブジェクト、DLLの利用も可能です)
・ スケジュール機能により指定時間や指定ウィンドウが現れた時などの指定ができます。

AutoITと同じWindows操作自動化ツールで、このジャンルとしては国内ユーザーが多く鉄板の存在なのだとか。動かすPCの性能、実行タイミングに影響される部分もあり検証は必ず必要ですが、動き出せばとてつもなく便利なツールです。
未熟者ではありますが、Webのサンプルやヘルプを元に3つのスクリプトを作成しました。

1.WindowsUpdateの適用設定

新着は通知しつつ、勝手にインストールさせない設定へ。
コントロールパネルはDOSCMDを使って直接設定画面を呼び出します。スタートメニューを辿っていく手順はどうにも失敗しやすいので。

//
// WindowsUpdate 設定
//
exeid = DOSCMD("C:\Windows\System32\wuapp.exe", False)
SLEEP(2)
id = GETID("Windows Update", "CabinetWClass", -1)
SLEEP(4)
clchk = CLKITEM(id, "設定の変更", CLK_ACC)
SLEEP(4)
CLKITEM(id, "更新プログラムを確認するが、ダウンロードとインストールを行うかどうかは選択する", CLK_LIST)
SLEEP(0.5)
CLKITEM(id, "推奨される更新プログラムについても重要な更新プログラムと同様に通知する(R)", CLK_BTN, True)
SLEEP(0.5)
CLKITEM(id, "OK", CLK_BTN)
SLEEP(5)
CTRLWIN(id, CLOSE)

2.アクションセンターのチェックボックス

選択できる全てのチェックを外します。SLEEP(0.1)は無くても動きますがお好みで。
//
// アクションセンターのチェックを全て解除する
//
id = DOSCMD("C:\Windows\System32\wscui.cpl", False)
SLEEP(1)
id = GETID("アクション センター", "CabinetWClass", -1)
SLEEP(3)
CLKITEM(id, "アクション センターの設定を変更", CLK_ACC)
SLEEP(1)
CLKITEM(id, "Windows Update", CLK_BTN, False)
SLEEP(0.1)
CLKITEM(id, "インターネット セキュリティ設定", CLK_BTN, False)
SLEEP(0.1)
CLKITEM(id, "ネットワーク ファイアウォール", CLK_BTN, False)
SLEEP(0.1)
CLKITEM(id, "スパイウェアと不要なソフトウェアの対策", CLK_BTN, False)
SLEEP(0.1)
CLKITEM(id, "ユーザー アカウント制御", CLK_BTN, False)
SLEEP(0.1)
CLKITEM(id, "ウイルス対策", CLK_BTN, False)
SLEEP(0.1)
CLKITEM(id, "SmartScreen", CLK_BTN, False)
SLEEP(0.1)
CLKITEM(id, "自動メンテナンス", CLK_BTN, False)
SLEEP(0.1)
CLKITEM(id, "ドライブの状態", CLK_BTN, False)
SLEEP(0.1)
CLKITEM(id, "デバイスのソフトウェア", CLK_BTN, False)
SLEEP(0.1)
CLKITEM(id, "スタートアップ アプリ", CLK_BTN, False)
SLEEP(0.1)
CLKITEM(id, "Windows トラブルシューティング", CLK_BTN, False)
SLEEP(0.1)
CLKITEM(id, "ホームグループ", CLK_BTN, False)
SLEEP(0.1)
CLKITEM(id, "ファイル履歴", CLK_BTN, False)
SLEEP(0.1)
CLKITEM(id, "記憶域", CLK_BTN, False)
SLEEP(0.1)
CLKITEM(id, "ワーク フォルダー", CLK_BTN, False)
SLEEP(0.5)
CLKITEM(id, "OK", CLK_BTN)
SLEEP(0.1)
CTRLWIN(id, CLOSE)

3.タスクバーのストアアイコン削除

Windows8.1から強制追加されるストアのアイコンを解除します。マスターPCにて消してCopyProfileを行っても復活してしまう邪魔者。レジストリを使う手もあります。

//
// タスクトレイからストアアイコンを外す(store.bmpでマッチ)
//

SLEEP(1)
ifb CHKIMG( "store.bmp",-1, )
x=G_IMG_X
y=G_IMG_Y
BTN(RIGHT, CLICK, x+22, y+21, 80)
SLEEP(1)
BTN(LEFT, CLICK, x+10, y-35, 80) 
else
PRINT "画像を探しても見つかりませんでした。"
EXITEXIT
endif

store.bmpはタスクトレイのストアアイコンを切り抜いた画像。

20141101-01パターンマッチで画面内にこの絵が無いかを探し、見つけたら左上の座標をx,yとして返してくれます。-1はモノクロイメージでパターンマッチ。この場合緑色のストアアイコンの左上が座標原点です(紫色の○)。アイコンの真ん中を右クリックしたいので、それぞれx+22,y+21した座標をBTN(RIGHT, CLICK…で右クリック(水色と青の交差点)

20141101-02その後飛び出るメニューの「タスクバーからピン止めを外す」をクリックしたいので、原点からyだけ-35した座標をBTN(LEFT, CLICK, で左クリック(赤い横棒のライン)。20台に1台くらい失敗するけど再度実行するとうまくいくので謎。この方法では負荷により認識失敗する時があるのかも。

iv.Ghostにてイメージを展開する

今回は以下の様な流れでiii.の自動設定を仕込みました。

  1. 展開イメージの\TEMPにスクリプト入りUWSCフォルダを仕込む。
  2. 展開イメージのスタートアップ(%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup)にStart.batを仕込む。
  3. 展開イメージのデスクトップ(%USERPROFILE%\Desktop)にEnd.batを仕込む。
  4. Ghost展開が終わると自動再起動、初期設定が走る。
  5. Autologoon設定により、1度だけ自動ログインしStart.batが起動、UWSCを順次実行する。
    (ex. start UWSC.exe xxxx.uws)
  6. 手動個別設定(ユーザー業務アプリなど)を実施
  7. 管理者権限でEnd.batを手動実行(ライセンス認証、netshによるIPアドレス設定、UWSCフォルダ及び%USERPROFILE%\AppData\Roaming\UWSCフォルダの削除、Start.bat,End.batの削除)

UWSCはAppDataに設定ファイルを残すので、忘れずに消すようにします。

あとはいつも通り台数分展開するだけです。が、新機種にはトラップ(?)がありました。

新機種はGhostがブートしない

「セキュアブート」が有効になったWindows8.1ネイティブ世代のPCでは、既存のブートイメージでは起動できませんでした。

セキュア ブートの概要


セキュア ブートは、PC 業界のメンバーによって開発されたセキュリティ標準で、PC の製造元から信頼されるソフトウェアのみを使って PC が起動されるようにします。

PC が起動されると、ファームウェアにより、ファームウェア ドライバー (オプション ROM) を含む各ブート ソフトウェアとオペレーティング システムの署名がチェックされます。署名が有効な場合は、PC が起動され、ファームウェアからオペレーティング システムに制御が渡されます。

Ghostのブート前にこれを解除する必要があります。

  1. BIOS起動
  2. 管理者パスワードを適当に設定
    (これを有効にしないと下記項目がグレーアウトして選べない)
  3. セキュアブート設定:「使用しない」
  4. 詳細メニュー→互換性サポートモジュール:「使用する」

展開後は変更した部分を戻し、管理用パスワードをブランク(そのままEnter)にしておきます。

WinPEをUEFIモードで起動できれば回避できるかも?と色々試しましたが結局うまくいかず。これをパスできたら結構手間が省けるのだけれど。PXEでもDVDでもメディアを読んだ瞬間「このシステムからは起動出来ません」と表示され止まります。

Ghost 自動スタートへの仕込み

過去記事でも書いてますが、WinPEが起動したら自動的にGhostが開始されるように設定を行います。そのための設定をWinPEの%SYSTEMROOT%\System32\Startnet.cmdに書きます。

wpeinit
set path=%path%,x:\ghost
ping localhost -n 10 > NUL
wpeutil DisableFirewall
net use Z: \\[サーバIP]\PXE_WORK /user:[ユーザ名] [パスワード]
z:
call restore.bat

wpeinitの後pingで10秒浪費させ、wpeutil DisableFirewallでWinPEのデフォルトファイアウォールを無効にしています。これを無効にしない場合、手作業でのGhostは問題なく動きますが、GhostCast配信がうまく始まらないなどの弊害が出ます。

次に共有フォルダをマッピングし、その中のバッチファイルを呼び出し。こうしているのは\\[サーバIP]\PXE_WORK\restore.batをメンテした方が、イメージの中のStartnet.cmdをいじるより楽な為です。

呼び出したrestore.batでサーバIP、セッション名を指定してGhost32.batを起動しておけば、サーバから許可が出次第自動スタートします。

cd ghost
ghost32.exe -ja=<セッション名 > -jaddr=<サーバIPアドレス>

GhostCastServerではパラメータに”-sure -rb”を付け、各端末が自動開始、自動リブートするようにします。

余談ですがこのGhost32.exeが32bitOnlyの為、WinPEもx86で作りました。正式購入なのでメールサポートを申しこめば64bit版がもらえるらしいのですが正直面倒臭い。

公式ドキュメントとして「UEFI環境のハードウェアでGhostを使用する場合のWinPE 4.0ブートパッケージ作成方法について」があるので、申し込んでこの通りやれば前述のセキュアブート問題も一気に解決するのかもしれません。
(”※Ghost Solution Suiteの有効な保守契約をお持ちのお客様に限り、UEFI対応パッチファイルを提供しています。最新のパッチ適用済みGhostはSymantecテクニカルサポート宛までご連絡ください”というプレゼン?資料も検索に引っかかりました。)

おまけ:Office2013の新たな問題

Office2013も展開する場合、VL版を購入し展開イメージに含めるのがセオリーです。

ただ、VL版とPIPC(プレインストール)版では価格に大きな差があるため後者を希望される場合もあるかと。それについてちょっと調べたのでメモとして残します。なお特定の1社についての事なので、すべてのメーカーPCに当てはまるかはわかりません。

Office2013の形態

Office2010まではプレインストールPCを買うとOfficeの媒体も付いてきた為なんの問題もありませんでした。ところがOffice2013は新しいライセンス規約により?面倒な事になってます。

  1. バックアップ媒体から戻す場合
    メーカーPCを添付リカバリディスクで戻す場合、リカバリイメージにOffice2013が含まれます。そこから分離する事はできず、個別に復元する/しないを決める事も出来ません。
  2. 個別インストールする:ダウンロード
    Microsoftアカウントを作成し、プレインストール版 (PIPC) 製品インストール | Microsoft Officeからインストーラ→本体をダウンロードしセットアップ。一番メジャーな方法で個人や数台なら問題ないかと。
  3. 個別インストールする:媒体購入
    プレインストール版 (PIPC) 製品インストール | Microsoft Officeにてインストール用媒体を購入する。1,500円で納期は約1週間。媒体にNoCOPYと書いてあるが、複数台に使いまわすのはいいらしい(コールセンター確認済み)

2.と3.の違いが一番気になる所。聞いたりググった結果、

2.は一度ダウンロードするとISOファイルからDVDを作れる。それを使って他PCにもインストールできるが、ライセンスキー入力時MSアカウントの入力も求められる。ライセンスキーはPCに付属のものではなく、上記PIPC画面に表示される別のキーを使用。一つのMSアカウントとヒモ付けできるキーは20個までの為、対象が20台を超える度にMSアカウントを新規作成する必要がある。

結論、面倒くさい。

3.は従来のOffice媒体の様に通常インストール可能。MSアカウントの入力を求められない為、2.で作成できる媒体とはバイナリが違うのかも。ライセンスキーもPCに付属のOffice2013カード?のキーをそのまま使用できます。
つまり1,500円を惜しまず媒体を用意したほうが、トータルで楽っぽいという結論。素直にVL版買ってくれば一番いいんですけどね。

以上。2回に分けて書いたWin8.1デプロイの備忘録でした。

コメントを残す