Windows10のマスタイメージ作ってキッティング作業簡略化してみた～③イメージ作成から展開編～

#はじめに
株式会社LITALICOで情シス部門におります@sayazamuraiです。この記事は『LITALICO Advent Calendar 2021』20日目の記事②です。

今回アドベントカレンダーに掲載するのは③ですが、前提として①②も必要な情報ですので、近日中にアップします！
　①WinPEのインストール及びカスタマイズ
　②sysprepの作成
　**③イメージデータの作成～展開　←今ここ**

#記事を書いた人
![テラ3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2357376/eadb3fee-b75c-6048-01b1-43b3b7783db6.jpeg)
@sayazamurai 

・所属：LITALICO 情シス部
・仕事内容：社員のアカウント作成、PCキッティング、ヘルプデスク的なこと

#####記事のテーマ決め
私が入社した当初(2021年6月ごろ)は同じチームのメンバーがとにかく多忙で、日々の業務をこなすので手一杯。
業務改善などを検討している場合ではなかったのですが、入社直後の私が(超当然ですが)即戦力になることもできず。。。

社内を見渡すとキッティング作業をすべて手動で行っていることを目撃したので、クローニング用のイメージ作ったらどうかと未経験ながら作ってみました。

自分が情報を集めるのに苦労したので、備忘録も兼ねて数ページに分けて書いてみます。
ゼロタッチの時代でも必要としている情シスの方がいることを信じて。。。！

#読んで欲しい人
・イメージ作成未経験だが、キッティングをクローニングで簡略化させたい情シスの方
・すでにイメージ作成経験はあるが、まだなにか改善できそうなのでサンプルが欲しい方

#前提条件
####LITALICOの社内状況
マスタイメージを作成する際に自分と同じ環境か？というのがわからず、作ってみてからエラーがでたり
うまく行かないタイミングで初めて「あぁ、この記事の人とは環境が違うなぁ！」と涙したことが何度かありました。
そんな方を増やさないためにも、LITALICOの記事記入時点での仕様や規模を掲載しますので参考値の一つとして認識いただければと思います。

|項目|環境|
|:--|:--|
|社員数|約3100人|
|使用機種(メイン)|Lenovo ThinkPadシリーズ ６種類くらい<br>(x13Intel、x13AMD、E15、x390、x280など)|
|OS|Windows10(20H2)|
|ActiveDirectory|使用|
|社内ドメイン|要参加|
|PC名|要設定(一意の値)|
|ローカルユーザー|共通の値で要作成|

####マスタイメージとは
**パソコンを社員に「どうぞ！」とお渡しできるようにするためにセットアップすること**をキッティングというわけですが、これを1台1台手動でやるには**とにかく時間がかかる**し、数が多いと途中で「どこまでやったんだっけ？」とわからなくなることもしばしば。。。

そこで、全台共通の設定に関しては1台だけ設定をしたあと、それを他のPCにコピーできればめちゃ楽なので、そのコピー元となるイメージデータを作成します。
このときの「コピー元」のことを**マスタイメージ**と呼ぶことが多い様です。

####キッティングとは
1.OSのインストール(OS＝Windows10 記事記入現在)
2.ネットワーク設定
3.各種ドライバーのインストール
4.業務アプリケーションのインストール（OfficeやGoogleも人間がインストールしています！）
5.ライセンス認証（※必要なもののみ）
6.OS・アプリケーション等の各種設定（既知のバグに対応する設定変更など）
7.WindowsUpdate（最新の状態に保つことがなにより大事ですね）
8.ドメイン参加（これをしないとそもそもパソコンにログオンできない）
9.ラベル貼付　

などなど、パソコンに関わること全般のことを言うことが多いみたいですね。

#イメージ作成
####１.ボリュームライセンス用のOSを流す
　弊社で使用しているのはWindows10 20H2 ですが、納品されたPCにすでにインストールされているOS(OEM版)や市販されているパッケージ版を使用すると<font color="red">ライセンス違反</font>となります。
そこで、企業向けに販売されている**ボリュームライセンス版**のOSを最初にインストールします。

OSのダウンロードは契約している企業であれば**ボリューム ライセンス サービス センター**から可能ですので、アカウントを確認してダウンロードしましょう！

https://www.microsoft.com/Licensing/servicecenter/default.aspx

弊社ではOSのインストールはUSBに格納し、ブート起動してインストールしました。

####２.sysprepを起動する
①インストール後、<font color="Red">ctrl+shift+F3</font> を押下してsysprepを起動します。
②sysprepのポップアップが表示されるため、「<font color="Red">システム監査モードに入る</font> 」に変更しそのままOKをクリックします。
※自動で再起動します。

####３.任意の設定を行う
社員が滞りなく業務を遂行できる様に設定します。
不要なアプリの削除なども、**行わなくても問題はない**ですが、作業を行う際に誤操作につながったりノイズになる可能性があるので、弊社ではあえて削除し**<font color="red">操作性のアップ</font>**も図っています。

||実施すること|説明|
|:--|:-----|:-------|
|①|**画面の解像度を変更する**|画面サイズを変更したい場合は解像度や文字サイズを変更します。|
|②|**ドライバーをインストールする**|事前準備が必要。グラフィックスやオーディオドライバーなど、サイズが大きいものはWindowsUpdateに頼らず手動で先にインストールしよう。<br><font size="-2">※余談ですが、Lenovoの場合は機種とは別に「タイプ(20RE、20TEなど)」があり**同じ機種でも別のドライバーが必要**になるのでご注意ください！</font> |
|③|**ネットワークに接続し、Windows10のライセンス認証を行う**|ライセンス認証は必須なので要確認です。|
|④|**WindowsUpdate**|<font color="Red">必ず実施</font>します。<br>多くのPCメーカーではWindows標準のドライバーを使用している場合が多いのとセキュリティパッチを充てる必要があるので、WindowsUpdateは必ず行います。|
|⑤|**動作確認**|WindowsUpdate完了後、Windows標準ドライバーを採用していないメーカーや機種は何かしら機能が動作しないので、対応するドライバーをインストールします。<br>※すでにわかっているものはUpdateの前にインストールすると楽です！|
|⑥|**不要アプリの削除**|Windows標準搭載されているかつUpdateで降ってきた不要アプリを削除します。<br>ただ、Windows標準搭載されているアプリは**手動でアンインストールできない**ので、PowerShellのコマンドで削除します。<br>コマンドはアプリによって異なるので、「Powershell 不要アプリ削除」などで検索してみてください。|
|⑦|**OneDriveを削除、完全に停止する**|**企業によります。**<br>弊社ではOneDriveの使用は禁止なので削除するのですが、**とにかくしつこい。**何度削除しても復活するのでkillコマンドなどで完全に削除します。コマンドは[こちら](####OneDriveを削除、完全に停止する)から|
|⑧|**アプリ復活無効化**|弊社ではXboxを無効化しています。<br>タスクスケジューラにてアプリの無効化を実施する<br>・ファイル名を指定して実行→「taskschd.msc」→タスクスケジューラ → XblGameSave → XblGameSave　を右クリック→無効|
|⑨|**必要なアプリのインストール**|MSOfficeやGoogleChromeなどはここでインストールします。|
|⑩|**その他細かい設定**|あくまでも一例として記載しますが、とっても細かいです、、、<br>●規定のアプリの設定<br>●アプリごとに既定値を設定する(弊社ではAdobeRD)<br>●7zipを開いてzip形式をデフォルトにする<br>●ニュース無効(タスクバーに表示されるニュースや天気のお知らせを非表示にする)<br>●クイックアクション(不要な表示はしない)<br>●「ファイル名を指定して実行」の履歴を残さない<br>●おすすめ表示無効化(不要アプリが表示されてノイズとなるため非表示)<br>●ネットワークと共有センター変更(**IPv6 のチェックを外す**など)<br>●スタートアップ修正<br>●フォルダオプション変更<br>●AdobeReader(アプリのアップデート、環境設定)<br>VPN設定<br>●デスクトップ整理<br>●拡張子関連付け固定<br>●ディスクのクリーンアップ実施|
|⑪|**イメージ流し込み時の仕込み**|sysprep応答ファイル、起動時に実行されるスクリプトをローカルにコピー|
|⑫|**エクスプローラーの履歴削除**||
|⑬|**ローカルユーザの作成**|弊社では機種によって２種類作成する場合もあります。|
|⑭|**sysprepの適用**|[コマンド](####sysprepの適用)で実施します。<br>実行前に、デスクトップに不要なファイルが残っていないかを確認してから実行します！|


#####【OneDriveを削除、完全に停止する】
|実施すること|コマンド|
|:--|:--|
|**①Onedriveを停止**|taskkill /f /im OneDrive.exe|
|**②Onedriveを削除**| C:\Windows\SysWOW64\OneDriveSetup.exe /uninstall|
|**③環境変数を削除する**|set onedrive= <br>※「＝」のあとにスペース有|

#####【sysprepの適用】

```Powershell
cd C:\Windows\System32\Sysprep
call Sysprep /generalize /oobe /shutdown /unattend:<任意のファイル名>.xml
```

#イメージの吸い上げ
sysprepでパッケージ化したデータをUSBメモリに吸い上げます。
※弊社では１本のUSBでイメージ作成～吸い上げ、流し込み(展開)を行う様にしていますが、
　外付けHDDなどにイメージ吸い上げももちろん可能です！

①WinPEを起動する
②下記コマンドを実行する

```Powershell
DISM /capture-image /imagefile:<格納先のドライブレター>:\images\<任意のファイル名>.wim /CaptureDir:C:\ /Name:"Windows 10"
```

弊社ではif文と<任意のファイル名>の部分に「%filename%」の変数を使用し、
**「3.イメージ取得」を選択→ファイル名を入力する→イメージを吸い上げる**
という流れを作っています。

イメージの吸い上げにはかなりの時間(**数時間程度**)かかりますので、完了まで待ちます。

#イメージの流し込み(展開)

イメージの吸い上げが問題なく完了したら、イメージを流し込みます。

||手順|説明|
|:--|:--|:--|
|①|WinPEを起動する|   |
|②|diskpartでパーティションを作成する。|コマンドは[こちら](####【diskpartコマンド】)|
|③|dismコマンドを実行する<br>※イメージ流し込み|コマンドは[こちら](####【dismコマンド】)|
|④|自動起動を待つ||


####【diskpartコマンド】
```Powershell
select disk 0 
clean
convert gpt
#パーティションを作成する
create partition efi size=100
format quick fs=fat32 label="System" #システム領域が一番大事！
create partition msr size=16
create partition primary size=121000
format quick fs=ntfs label="Windows"
assign letter=C
```
####【dismコマンド】
```Powershell
 dism /Apply-Image /ImageFile:E:\images\<イメージファイル名> /Index:1 /ApplyDir:c:\
 bcdboot C:\Windows /l ja-jp
```


#最終設定
最後にイメージには組み込めない部分の設定をして完了です。

||手順|説明|
|:--|:--|:--|
|①|**ドメイン参加**|弊社ではパソコン１台１台のホスト名(PC名)が異なるため、ドメイン参加をイメージ適用後に行っています。|
|②|**ホスト名(PC名)の設定**|弊社では資産管理の目的でパソコン１台１台にホスト(PC)名を付与しているので、対応する一意の値を設定しています。|
|③|**特殊なアプリのインストール**|弊社ではドメイン参加後でないとインストールできないアプリケーションを採用しているため、イメージ適用→ドメイン参加後にアプリのインストールも行っております。|
|④|**WindowsUpdate**|イメージを作成してからWindows用のパッチが配信されていることが多いので流し込みの後Updateを行い、最新の状態にします。|
|⑤|**動作確認**|なんだかんだ一番大切な作業がコレ。<br>正常に見えても実は**うまく動いていない機能がある場合がある**ので、概ね共通して使用される機能や動作に問題がないか確認を行っています。|
|⑥|**在庫化**|イメージ適用、動作に問題がなければ在庫化し、別の社員が必要なタイミングでいつでも渡せる様に準備しておきます。|

#おわりに
　めちゃ長くなってしまった。。。ここまで呼んでくださった方ありがとうございます。
　改善点など見つけた優しい方はコメントお願いしますm(_ _)m

**明日は@nobuhide-saitoさんの記事です！**
たぶん私が今興味あることを書いてくれるんだよな～お楽しみに！！