説明すること
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 等を設定しています。
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
Windows Update
- スクリプト(lcu.bat)
- 累積更新プログラム(LCU)
lcu.batで累積更新プログラム(LCU)をインストールしています。
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
開発環境のインストール
Qiitaの記事を見て以下の3つをインストールしてください(投稿者の方、ありがとうございます)。
- Microsoft Deployment Toolkit
- Windows ADK for Windows 10
- ADK 用の Windows PE アドオン
参考サイト
Microsoft Deployment Toolkit (MDT) 単体運用はじめの一歩 2020
MDTの設定
MDT Deployment Share を展開してワークベンチを設定します。
Operating Systems
- Windows Server 評価版のisoファイルをドライブにマウント
- "Operating Systems" を右クリック、ウィザードにしたがってOSをインポート
- インポートが成功すると以下のように画面が表示
Packages
- "Packages"を右クリック、"SSU"というフォルダーを作成
- "SSU" を右クリックしてウィザードにしたがってサービス スタック更新プログラム(SSU)をインポート
- インポートが成功すると以下のように画面が表示(LCUはApplicationsで設定します)
Task Sequences
- "Task Sequences"を右クリック、"New Task Sequence"を選択、ウィザードにしたがってタスク作成
- インポートが成功すると以下のように画面が表示(DatacenterとStandardの2種類作成)
ウィザードの詳細(左の三角をクリックして展開)
Datacenterの場合の例を説明します。IDと名前を入力します(ユニークでなければいけません)。  サーバーシーケンスを選択します。  Datacenterを選択します(サーバーコアと間違えないように)。  プロダクトキーは後で入力します。  名前と組織を入力します。  パスワードは後で入力します。  間違いがないかを確認して、"Next"をクリックします。  "Finish"をクリックして完了、同様に**Standard**のタスクも作成します。 Selection Profiles
- "Selection Profiles"を右クリック、"Selection Profile"を選択、"Offline Media"を作成
- ウィザードにしたがってタスク作成
- 成功すると以下のように画面が表示
ウィザードの詳細(左の三角をクリックして展開)
"Offline Media"と入力します。  全てを選択します。 Media
- "Media"を右クリック、"New Media"を選択、ウィザードにしたがってタスク作成
- 成功すると以下のように画面が表示
ウィザードの詳細(左の三角をクリックして展開)
ISOを出力するフォルダーとオフラインメディア用プロファイルを選択します。  間違いがないかを確認して、"Next"をクリックします。  プロパティを確認、変更します。   Applications
- "Applications"を右クリック、"New Application"を選択、ウィザードにしたがってタスク作成
- 成功すると以下のように画面が表示(個別アプリケーションとWindows Updateの2種類作成)
ウィザードの詳細(左の三角をクリックして展開)
Windows Update の場合の例を説明します。ソースファイルを選択します。  アプリケーションの名前を入力します。  ファイルの配置しているフォルダーを指定します。  そのまま、次に行きます。  実行するスクリプトの名前を入力します。  間違いがないかを確認して、"Next"をクリックします。  "Finish"をクリックして完了します。同様に**個別アプリケーション**も作成します。 ISO作成
操作ペインにある"MEDIA001"の"Update Meida Content"を実行します。
処理が完了するとISOファイルが出力されます。
ISO使ったインストール
- VMware仮想環境のデータストアに作成したISOをアップロードします。
- VMware仮想環境にインストールする仮想マシンを作成します。
- 仮想マシンにISOをマウントして仮想マシンを起動します。
- ウィザードにしたがってインストールします。
ウィザードの詳細(左の三角をクリックして展開)
「Run the Deployment Wizard to install a new Operating System」をクリックします。  購入したWindows Server のライセンスを選択して、「Next」をクリックします。 ※StandardとDatacenterは使用できる機能が異なります。正しいライセンスを選択してください。  コンピュータ名を入力して、「Next」をクリックします。  言語設定とタイムゾーンを確認して、「Next」をクリックします。  セットアップするサーバー種別を1つだけとWindows Update選択して、「Next」をクリックします。 ※サーバー種別を複数選択してはいけません。  Administratorのパスワードを入力して、「Next」をクリックします。  そのまま、「Next」をクリックします。  そのまま、「Begin」をクリックします。  Windows Updateは時間がかかります。  Successと表示されるとデプロイ成功です。自動的に再起動します。  Winsdows Updateを適用しています。  メニューバーのCtrl+Alt+Delボタンをクリックします。  パスワードを入力してサインオンします。  イベントビューアーをクリックします。  Windows Updateが正常に変更されたことを確認します。 最後までお読みいただき誠にありがとうございました。