Microsoft Deployment Toolkit で設定済み Windows Server をインストール

# 説明すること

Microsoft Deployment Toolkit (MDT) を使って Windows Update を適用した Windows Server のインストーラーを作成します。.NET Framework 3.5 やファイル共有サービスといったデフォルトで設定されないものも設定済みにします。

# やりたいこと
オフラインのVMware仮想環境に Windows Update 済み、及び各種設定済みの Windows Server をライトタッチ（少ない手順）でインストールしたい。作成したイントーラーをオフライン環境にアップロードしてインストールします。

# ポイント
Windows Updateは累積更新プログラム(LCU)を使います。LCUの前提として、サービス スタック更新プログラム(SSU)がインストールされている必要があります。SSUはMDTで問題なくインストールできますが、LCUは普通にやるとうまくいきません。そのため、LCUはスクリプトを使ってアプリケーションとしてインストールします。


# 準備するもの
インストーラーはマイクロソフトのサイトからダウンロードしてください。開発環境のビルドは環境に合わせて変更してください。

#### 開発環境
- Windows 10
- Microsoft Deployment Toolkit (8456)
- Windows ADK for Windows 10 Version 1809 (10.1.17763.1)
- ADK 用の Windows PE アドオン

#### 作成するWindows Server の材料

- Windows Server 2019 評価版（評価版はライセンス適用で正式版に変更可能）
- 2021-03x64 ベース システム用 Windows Server 2019 サービス スタック更新プログラム (KB5000859)
- 2021-03x64 ベース システム用 Windows Server 2019 の累積更新プログラム (KB5000854)
- VMware-tools-11.2.5-17337674-x86_64（VMware環境が前提）

※サービス スタック更新プログラム、累積更新プログラム、及びVMware Toolsのレベルはシステム要件に合わせて変更してください。

# フォルダーとファイルの準備
パッケージングする個別アプリケーションとWindows Updateのフォルダーを作成してファイルを配置します。
#### 個別アプリケーション

- 配布したいフォルダー(EcruInstaller)
- スクリプト(EcruDefault.bat)
- VMware Tools

EcruDefault.batで.NET Framework 3.5、ファイル共有サービス、VMware Tools 等を設定しています。
<details><summary>EcruDefault.batの詳細（左の三角をクリックして展開）</summary><div>

```bat:EcruDefault.bat
@echo off

ECHO START %DATE% %TIME% > C:\EcruDefault.log 2>&1

ECHO PowerShellポリシー変更                           >> C:\EcruDefault.log 2>&1
powershell Set-ExecutionPolicy RemoteSigned           >> C:\EcruDefault.log 2>&1

ECHO ファイル共有の有効化                             >> C:\EcruDefault.log 2>&1
powershell Install-WindowsFeature -name FS-FileServer >> C:\EcruDefault.log 2>&1

ECHO .NetFramework 3.5のインストール                  >> C:\EcruDefault.log 2>&1
powershell Install-WindowsFeature -name NET-Framework-Core -source 'D:\Deploy\Operating Systems\Windows Server 2016 SERVERSTANDARDCORE x64\sources\sxs' >> C:\EcruDefault.log 2>&1

ECHO ファイアウォールを変更                           >> C:\EcruDefault.log 2>&1
netsh advfirewall firewall set rule group="リモート デスクトップ" new enable=yes                    >> C:\EcruDefault.log 2>&1
netsh advfirewall firewall add rule name="All SMB" protocol=TCP dir=in localport=445 action=allow   >> C:\EcruDefault.log 2>&1
netsh advfirewall firewall add rule name="All ICMP V4" protocol=icmpv4:any,any dir=in action=allow  >> C:\EcruDefault.log 2>&1
netsh advfirewall firewall add rule name="All ICMP V6" protocol=icmpv6:any,any dir=in action=allow  >> C:\EcruDefault.log 2>&1

ECHO リモートデスクトップを有効にする                 >> C:\EcruDefault.log 2>&1
powershell set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server'-name fDenyTSConnections -Value 0 >> C:\EcruDefault.log 2>&1

ECHO User Account Contorlを無効にする  要OS再起動     >> C:\EcruDefault.log 2>&1
powershell set-ItemProperty -Path 'HKLM:SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -name LocalAccountTokenFilterPolicy -Value 1 >> C:\EcruDefault.log 2>&1
powershell set-ItemProperty -Path 'HKLM:SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -name FilterAdministratorToken -Value 0      >> C:\EcruDefault.log 2>&1
powershell set-ItemProperty -Path 'HKLM:SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' -name EnableLUA -Value 0                     >> C:\EcruDefault.log 2>&1

ECHO SNPの無効化 tcp                            >> C:\EcruDefault.log 2>&1
netsh int tcp show global                       >> C:\EcruDefault.log 2>&1
REM netsh int tcp set global rss=disabled           >> C:\EcruDefault.log 2>&1
netsh int tcp set global chimney=disabled       >> C:\EcruDefault.log 2>&1
netsh int tcp set global netdma=disabled        >> C:\EcruDefault.log 2>&1
netsh int tcp show global                       >> C:\EcruDefault.log 2>&1

ECHO SNPの無効化 ipv4                           >> C:\EcruDefault.log 2>&1
netsh int ipv4 show global                      >> C:\EcruDefault.log 2>&1
netsh int ipv4 set global taskoffload=disabled  >> C:\EcruDefault.log 2>&1
netsh int ipv4 show global                      >> C:\EcruDefault.log 2>&1

ECHO SNPの無効化 ipv6                           >> C:\EcruDefault.log 2>&1
netsh int ipv6 show global                      >> C:\EcruDefault.log 2>&1
netsh int ipv6 set global taskoffload=disabled  >> C:\EcruDefault.log 2>&1
netsh int ipv6 show global                      >> C:\EcruDefault.log 2>&1

ECHO Windows Defender リアルタイム保護を無効にする              >> C:\EcruDefault.log 2>&1
powershell Get-MpPreference | findstr DisableRealtimeMonitoring >> C:\EcruDefault.log 2>&1
powershell Set-MpPreference -DisableRealtimeMonitoring $true    >> C:\EcruDefault.log 2>&1
powershell Get-MpPreference | findstr DisableRealtimeMonitoring >> C:\EcruDefault.log 2>&1

ECHO Windows Update 更新を確認しない              >> C:\EcruDefault.log 2>&1
net stop wuauserv                                 >> C:\EcruDefault.log 2>&1
cscript C:\Windows\System32\scregedit.wsf /AU 1   >> C:\EcruDefault.log 2>&1
cscript C:\Windows\System32\scregedit.wsf /AU /v  >> C:\EcruDefault.log 2>&1
net start wuauserv                                >> C:\EcruDefault.log 2>&1

REM NTP設定
sc config w32time start= auto
net start w32time
w32tm /config /manualpeerlist:"133.243.238.163 133.243.238.164 133.243.238.243 133.243.238.244",0x8 /syncfromflags:MANUAL /update

robocopy EcruInstaller C:\EcruInstaller /e /A-:R /np /log:C:\Robocopy_EcruInstaller.log

VMware-tools-11.2.5-17337674-x86_64.exe /S /v "/qn REBOOT=R"

:END
ECHO E N D %DATE% %TIME% >> C:\EcruDefault.log 2>&1
```
</div></details>

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698263/d74052ef-b5cc-f371-a5b7-65a1a2724462.png)

#### Windows Update

- スクリプト(lcu.bat)
- 累積更新プログラム(LCU)

lcu.batで累積更新プログラム(LCU)をインストールしています。
<details><summary>lcu.batの詳細（左の三角をクリックして展開）</summary><div>

```bat:lcu.bat
@echo off

ECHO START %DATE% %TIME% > C:\LatestCumulativeUpdate.log 2>&1

powershell Start-Sleep -Seconds 15
dism /online /Cleanup-Image /RestoreHealth
powershell Start-Sleep -Seconds 15

windows10.0-kb5000854-x64_c418f933e1d0965935caeddb273bc8194bdfd760.msu /quiet /warnrestart

:END
ECHO E N D %DATE% %TIME% >> C:\LatestCumulativeUpdate.log 2>&1
```
</div></details>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698263/9722abcd-6eed-7e7b-dc2d-156656485395.png)

# 開発環境のインストール
[Qiitaの記事](https://qiita.com/les_paul/items/3ab6e03c82f11a82f720 "Microsoft Deployment Toolkit (MDT) 単体運用はじめの一歩 2020")を見て以下の3つをインストールしてください（投稿者の方、ありがとうございます）。

- Microsoft Deployment Toolkit
- Windows ADK for Windows 10
- ADK 用の Windows PE アドオン

参考サイト
[Microsoft Deployment Toolkit (MDT) 単体運用はじめの一歩 2020](https://qiita.com/les_paul/items/3ab6e03c82f11a82f720 "Qiitaの記事")

# MDTの設定
MDT Deployment Share を展開してワークベンチを設定します。
#### Operating Systems

1. Windows Server 評価版のisoファイルをドライブにマウント
1. "Operating Systems" を右クリック、ウィザードにしたがってOSをインポート
1. インポートが成功すると以下のように画面が表示

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698263/b77c06c2-4355-10d2-ce73-3d0665293788.png)

#### Packages

1. "Packages"を右クリック、"SSU"というフォルダーを作成
1. "SSU" を右クリックしてウィザードにしたがってサービス スタック更新プログラム(SSU)をインポート
1. インポートが成功すると以下のように画面が表示（LCUはApplicationsで設定します）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698263/0d7dc2fe-a517-fb95-f559-7e8f37fdb4e9.png)

#### Task Sequences

1. "Task Sequences"を右クリック、"New Task Sequence"を選択、ウィザードにしたがってタスク作成
1. インポートが成功すると以下のように画面が表示（**DatacenterとStandardの2種類作成**）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698263/b17e519a-1b40-2429-1d00-5f1cd6ee80fa.png)
<details><summary>ウィザードの詳細（左の三角をクリックして展開）</summary>
Datacenterの場合の例を説明します。IDと名前を入力します（ユニークでなければいけません）。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698263/0e962be2-605a-7cb0-7e31-4271ad08a391.png)
サーバーシーケンスを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698263/e0e0d254-0450-7eaa-1707-ba5b69bf9955.png)
Datacenterを選択します（サーバーコアと間違えないように）。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698263/68af0613-cebf-dc35-9749-325fe6e5952e.png)
プロダクトキーは後で入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698263/a31ddd8a-f887-e49a-0f25-edbe1996185e.png)
名前と組織を入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698263/c8d37448-a8c6-9fbe-d954-f952f7d209b4.png)
パスワードは後で入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698263/1b9ab3b5-bf4e-87b7-a856-e1d1e527bde9.png)
間違いがないかを確認して、"Next"をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698263/61edc09e-3a1a-e352-9d4f-83aa6818d840.png)
"Finish"をクリックして完了、同様に**Standard**のタスクも作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698263/ce3bb999-daa9-0fee-2756-8ad0abff338c.png)
</details>

#### Selection Profiles

1. "Selection Profiles"を右クリック、"Selection Profile"を選択、"Offline Media"を作成
1. ウィザードにしたがってタスク作成
1. 成功すると以下のように画面が表示

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698263/b9dba071-6a31-0f4e-2ecf-37813d615030.png)
<details><summary>ウィザードの詳細（左の三角をクリックして展開）</summary>
"Offline Media"と入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698263/3143fc53-411a-a751-d585-d261a1b58b6e.png)
全てを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698263/62df6437-583e-82aa-b944-e6f918bacb9e.png)
</details>

#### Media

1. "Media"を右クリック、"New Media"を選択、ウィザードにしたがってタスク作成
1. 成功すると以下のように画面が表示

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698263/63ce0643-14a4-59c5-784e-658994c361dc.png)
<details><summary>ウィザードの詳細（左の三角をクリックして展開）</summary>
ISOを出力するフォルダーとオフラインメディア用プロファイルを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698263/8f0d9356-66c2-c3f6-eaaa-ed460198260e.png)
間違いがないかを確認して、"Next"をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698263/9a59616f-ebdb-dba3-497b-b4abf1e9d137.png)
プロパティを確認、変更します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698263/21b78443-61b1-111a-cb70-454d7c1d5715.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698263/3c279acc-1073-023e-7b15-fb840b7bcf73.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698263/7baa26ac-954d-81dc-337c-5e3675c1405f.png)
</details>

#### Applications

1. "Applications"を右クリック、"New Application"を選択、ウィザードにしたがってタスク作成
1. 成功すると以下のように画面が表示（**個別アプリケーションとWindows Updateの2種類作成**）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698263/2f900b32-c9ed-bc45-5214-94ac42c062bc.png)
<details><summary>ウィザードの詳細（左の三角をクリックして展開）</summary>
Windows Update の場合の例を説明します。ソースファイルを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698263/23f433bb-8dd3-9e88-5a5a-df65d7903799.png)
アプリケーションの名前を入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698263/1f2cdc6f-f316-cefb-28b5-e40d2f56933c.png)
ファイルの配置しているフォルダーを指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698263/e3d62a49-21b6-ada1-b6df-74b9322228b8.png)
そのまま、次に行きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698263/4c70c673-ee5e-279a-ca15-a2a14a24e5f0.png)
実行するスクリプトの名前を入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698263/36843866-474b-9b82-fe5e-811082df711a.png)
間違いがないかを確認して、"Next"をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698263/6d19ace5-57d1-2b6a-9bdf-4e2b6faae1aa.png)
"Finish"をクリックして完了します。同様に**個別アプリケーション**も作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698263/c7544d31-8606-b8f5-d0f9-c83f17d671bd.png)

</details>

# ISO作成

操作ペインにある"MEDIA001"の"Update Meida Content"を実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698263/c44f4527-dddc-c59d-8989-d7a0488edc03.png)
処理が完了するとISOファイルが出力されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698263/d6c69e62-5082-443c-37a2-baae9422e2f9.png)

# ISO使ったインストール

1. VMware仮想環境のデータストアに作成したISOをアップロードします。
1. VMware仮想環境にインストールする仮想マシンを作成します。
1. 仮想マシンにISOをマウントして仮想マシンを起動します。
1. ウィザードにしたがってインストールします。

<details><summary>ウィザードの詳細（左の三角をクリックして展開）</summary>
「Run the Deployment Wizard to install a new Operating System」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698263/10ea7e2a-7b36-0d49-c9aa-d90ed4129c3b.png)
購入したWindows Server のライセンスを選択して、「Next」をクリックします。
※StandardとDatacenterは使用できる機能が異なります。正しいライセンスを選択してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698263/278ab6cc-90c9-03fe-e0b8-8302528b9670.png)
コンピュータ名を入力して、「Next」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698263/9ae39b89-15de-e053-a72d-1061c4177f44.png)
言語設定とタイムゾーンを確認して、「Next」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698263/f1bc06cf-d368-854a-aa1d-ad86cc2852a1.png)
セットアップするサーバー種別を1つだけとWindows Update選択して、「Next」をクリックします。
※サーバー種別を複数選択してはいけません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698263/9850d20a-2879-b78c-fd6a-0d6e0226c4d7.png)
Administratorのパスワードを入力して、「Next」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698263/80b63a5d-a3dd-1f80-5bc5-e1387a52d330.png)
そのまま、「Next」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698263/04dd3c5a-82e5-ec48-d2f5-fd11a8d3ce78.png)
そのまま、「Begin」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698263/7ccdf23f-f347-4d06-824d-f407341e6b0f.png)
Windows Updateは時間がかかります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698263/f442473c-651c-f2c1-f635-fda58e45e9cd.png)
Successと表示されるとデプロイ成功です。自動的に再起動します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698263/217a0440-015d-e69d-1413-e9606980c416.png)
Winsdows Updateを適用しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698263/ed99448f-37ef-39ac-bea5-03f974212947.png)
メニューバーのCtrl+Alt+Delボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698263/0d49dafc-70d9-ff01-05d1-492411ddcf64.png)
パスワードを入力してサインオンします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698263/5a1430fc-f773-d092-3346-05a47d32c7f6.png)
イベントビューアーをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698263/350b2a76-40d3-454a-8eb8-7a014a2a09c4.png)
Windows Updateが正常に変更されたことを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698263/d2745c8f-77a2-0fd4-fa3b-74aae2d5262e.png)

</details>

最後までお読みいただき誠にありがとうございました。