記事の目的
Windows Server 2012(またはWindows 8.1)まではWindows Updateの設定を「更新プログラムを自動的にインストールする」や「更新プログラムを確認しない」等から選ぶことができました。
一方Windows Server 2016(またはWindows 10)以降、上記オプションを選択するUIがなくなりました。UI上から適用を遅らせることはできますが、適用の手動化はできません。
しかしUIから変更できなくなっただけで、設定自体は存在します。
この記事では設定変更の方法を記載します。
注意
以下の手順ではレジストリを変更します。
お決まりの文句ですが、実施前にバックアップを取るなど行ってください。
また、変更は自己責任の下実施してください。
前提
- Windows Server 2016
- Windows 10
実施
- レジストリエディターを起動します。
- 左ツリーで以下のキーに移動します。
HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU
- 左画面で
AUOptions
を選択し、右クリックして「修正」を選択します。 - 「表記」を
10進数
にして「値のデータ」に以下から設定したい値を入力し「OK」を押します。
1: コンピューターの自動更新を無効にします。
2: ダウンロードおよびインストールを通知します。
3: 自動的にダウンロードしてインストールを通知します。
4: 自動的にダウンロードして、スケジュールに従ってインストールします。 - レジストリエディターを終了し、サーバーを再起動します。
おまけ
対話形式で設定を変更するPowershellを記載します。
※ 実行はご自身の責任で行ってください。
※ 記法が正しくない、または効率的でない可能性が多分にあります。
function RegSet( $RegPath, $RegKey, $RegKeyType, $RegKeyValue ){
$Elements = $RegPath -split "\\"
$BeforeElement = ""
$RegPath = ""
$FirstLoop = $True
$idx = 0
foreach ($Element in $Elements){
if($FirstLoop){
$FirstLoop = $False
}
else{
$RegPath += "\"
}
$RegPath += $Element
if ($idx -gt 1) {
if(-not (test-path $RegPath)){
$ParentPath = ""
for ($idx1 = 0; $idx1 -lt $idx-1; $idx1++) {
$ParentPath += $Elements[$idx1]
$ParentPath += "\"
}
(Get-Item $ParentPath).OpenSubKey($Elements[$idx-1], $true).CreateSubKey($Element)
}
}
$idx += 1
}
$Result = Get-ItemProperty $RegPath -name $RegKey -ErrorAction SilentlyContinue
if( $Result -ne $null ){
Set-ItemProperty $RegPath -name $RegKey -Value $RegKeyValue
}
else{
New-ItemProperty $RegPath -name $RegKey -PropertyType $RegKeyType -Value $RegKeyValue
}
Get-ItemProperty $RegPath -name $RegKey
}
Write-Host "_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/"
Write-Host "_/_/_/ ModifyRegForWindowsUpdate _/_/_/"
Write-Host "_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/"
$Opt1 = "1: コンピューターの自動更新を無効にします。"
$Opt2 = "2: ダウンロードおよびインストールを通知します。"
$Opt3 = "3: 自動的にダウンロードしてインストールを通知します。"
$Opt4 = "4: 自動的にダウンロードして、スケジュールに従ってインストールします。"
Write-Host
Write-Host $Opt1
Write-Host $Opt2
Write-Host $Opt3
Write-Host $Opt4
Write-Host "-----"
$WUOpt = Read-Host "設定するWindows Updateのオプションを選択してください。(1~4)"
switch($WUOpt)
{
"1" {Write-Host $Opt1}
"2" {Write-Host $Opt2}
"3" {Write-Host $Opt3}
"4" {Write-Host $Opt4}
default {
Write-Host "不正な値が入力されました。: $WUOpt 処理を中断します。"
Read-Host "終了するには Enterキーを押してください..."
Exit
}
}
$Confirm = Read-Host "実行します。よろしいですか? (Y/n)"
if ($Confirm -ne "Y") {
Write-Host "処理を中断します。"
Read-Host "終了するには Enterキー を押してください..."
Exit
}
Write-Host "-----"
try {
Regset -RegPath "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" -RegKey "AUOptions" -RegKeyType "DWord" -RegKeyValue $WUOpt
Write-Host "処理が終了しました。"
Write-Host "設定を有効にするためにはWindowsの再起動が必要です。"
} catch {
Write-Host "エラーが発生しました。"
Write-Host $Error[0]
}
Read-Host "終了するには Enterキー を押してください..."