Windows環境の最低限の設定

投稿者: | 4月 29, 2020

会社やホームラボでOSを用意するとき、ISOイメージからOSをセットアップして用意している人がたまーに、いや多く見られる。多分だが、昔の感覚でサーバにOSを入れるところから始めないと気が済まないのではないのだろうか?一方、自動化しておけば、誰がOSを作っても同じ環境なので、インストールした人の差異がでない。QA (Quality Assuarance)の仕事をしているとここの差異のある無しでトラブル時の原因追及にかかる工数が大きく異なる。

以下が、Windows Serverを構築するときにまず実行するコマンド。

<Windows Update>

勝手にWindows Updateが走るのを止めたい。Windows Updateのばらつきを作らないのと、OSやネットワークに負荷をかけたくない。Server OSならまだWindows Updateだけで可愛いが、Windows 10などは初回インストールのストアアプリの更新がえげつない。さらにストアアプリの更新が走るとsysprepがまともに動作しなくなる。

rem Disable Windows Update (Suppress showing auto update with full screen.)
rem Default: reg delete “HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU” /v “NoAutoUpdate”
reg add “HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU” /v “NoAutoUpdate” /t REG_DWORD /d “1” /f

<電源設定>

電源パフォーマンスをハイパフォーマンスにしたい。これをしないとサスペンドしてしまうことも

rem Setting Power “High Performance”
rem Default: powercfg -S 381b4222-f694-41f0-9685-ff5bb260df2e
powercfg -S 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c

rem Setting timeout 0 in AC (for avoid lock screen)
powercfg -CHANGE /monitor-timeout-ac 0
powercfg -CHANGE /disk-timeout-ac 0
powercfg -CHANGE /standby-timeout-ac 0
powercfg -CHANGE /hibernate-timeout-ac 0

<リモートデスクトップ>

長らく設定が成功しなかった。。。ファイアウォールの設定がリテラルだったのに気がつかず。

rem Enable RDP
rem Default: reg add “HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server” /v fDenyTSConnections /t REG_DWORD /d “1” /f
reg add “HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server” /v fDenyTSConnections /t REG_DWORD /d “0” /f

rem Open RDP firewall rule
rem Default: netsh advfirewall firewall set rule group=”リモート デスクトップ” new enable=no
netsh advfirewall firewall set rule group=”リモート デスクトップ” new enable=yes

<クライアントOSのパスワード更新の抑止>

これは、ドメイン環境でよく起きるのだが、ドメインメンバーになったマシンのスナップショットを30日前に戻すとドメインから蹴飛ばされてしまう。それを抑止。VDIやっている人ならお馴染みの設定かもしれない。

rem Disable changing password at client side (Avoid to fail to domain join over 30 day in some situation)
rem Default: reg add HKLM\SYSTEM\CurrentControlSet\services\Netlogon\Parameters /v DisablePasswordChange /t REG_DWORD /d 0 /f
reg add HKLM\SYSTEM\CurrentControlSet\services\Netlogon\Parameters /v DisablePasswordChange /t REG_DWORD /d 1 /f

<ローカルAdministratorの有効化とパスワード有効期限の無期限化>

クライアントOSでsysprepをするときには必ず必要。Server OSでもAdminのパスワードを改めて設定したい。%PASSWORDSTRINGS%にパスワードを記載

rem Enable local Administrator user with PASSWORDSTRINGS for domain join (Especially for client OS)
net user administrator /active:yes
net user administrator %PASSWORDSTRINGS%

rem Extend local password policy (It is for 2012R2 and before)
net accounts /maxpwage:unlimited

<ログイン時にCTRL-ALT-DELETEを押さなくてもログインができる>

地味に面倒な、CTRL-ALT-DELETE。これをしなくてもログインができる。これはめちゃくちゃ便利。

rem Disable CTRL-ALT-DELETE when you logon (Easy to login)
rem Default: reg delete “HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System” /v “DisableCAD”
reg add “HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System” /v “DisableCAD” /t REG_DWORD /d “1” /f

<Server OSのIEセキュリティの無効化>

Server OSで最初の使えるブラウザはIEなのだが、IEがデフォルトだと全く使えないので、セキュリティ設定を外す

rem Disable IE SEC (For Internet access with Internet Explorer)
rem Default: reg add “HKLM\Software\Microsoft\Active Setup\Installed Components\{A509B1A7-37EF-4b3f-8CFC-4F3A74704073}” /v IsInstalled /t REG_DWORD /d 1 /f
rem reg add “HKLM\Software\Microsoft\Active Setup\Installed Components\{A509B1A8-37EF-4b3f-8CFC-4F3A74704073}” /v IsInstalled /t REG_DWORD /d 1 /f
reg add “HKLM\Software\Microsoft\Active Setup\Installed Components\{A509B1A7-37EF-4b3f-8CFC-4F3A74704073}” /v IsInstalled /t REG_DWORD /d 0 /f
reg add “HKLM\Software\Microsoft\Active Setup\Installed Components\{A509B1A8-37EF-4b3f-8CFC-4F3A74704073}” /v IsInstalled /t REG_DWORD /d 0 /f

<ネットワークプロファイルの変更>

これも重要なんだが、よくすっ飛ばされる項目。ネットワークが追加されたりすると、ポップアップが出るがこれを適当にしておくとパブリックネットワークになってしまう。そうするとファイアウォールが意図しない動きになり、結果として多くの設定がファイアウォール無効ということになってしまう。ちゃんと設定すればインストーラーが空けたファイアウォールの穴だけで動作するケースが多いのだが。。。また、このプロファイルはコントロールパネルとかでは変えられず、PowerShellやグループポリシーでしか変更できない。今回はPowewrshellでやってみた。

rem Set Private network
Powershell Get-NetConnectionProfile
Powershell “Get-NetConnectionProfile | where Name -eq “ネットワーク” | Set-NetConnectionProfile -NetworkCategory Private”
Powershell Get-NetConnectionProfile

これらをcmdファイルにして、起動ログイン直後に実行すればかなり効率的になる。

コメントを残す