Home > Windows にまつわる e.t.c.

フルオートでWindows Updateする


新規構築した Windows 環境に対して Windows Update するのは、何度も再起動が必要なので手間がかかります。

でも、この PowerShell スクリプトを使うと、再起動が不要になるまで Windows Update と再起動を自動で繰り返すので、放置しておけば Windows Update が完了するという手間いらず !!

スクリプトの実行ログは C:\WU_Log に出力されます。

動作環境は Windows 7 / Windows Server 2008 R2 以降です。

 

使い方

C:\WindowsUpdate を作成し、スクリプト(AutoWindowsUpdate.ps1)を置いて管理権限で実行します。
引数に「 Full 」を与えると全ての更新を適用し、引数なしだと重要な更新のみを適用します。

C:\WindowsUpdate\AutoWindowsUpdate.ps1 Full

 

実行ログに "=-=-=-=-=- Windows Update finished -=-=-=-=-=" が出力されるまで放置します(環境にもよりますが Windows Server 2012 R2 Update 1 の初 Full で 3 時間くらい)
そのまま使っていると、予告もなく再起動が入るので危険です。

以下スクリプトを PowerShell プロンプトにコピペすれば最新の Windows Update 実行ログのラスト10行が表示されるので、テキストエディタでログ開かなくても簡単に確認できます。

$NewestLog = dir C:\WU_Log\*.log | sort LastWriteTime -Descending | Select -First 1
Get-Content $NewestLog.FullName | Select -Last 10

 

会話式の更新(Windows Defenderのパターンファイルとか)は更新が適用されないので、最後に手動 Windows Update する必要がありますが、これは短時間で終わります。

Windows Server の場合、役割/機能を追加すると更新が増えるので、環境構築完了後に Windows Update することをお勧めします。

 

スクリプトのダウンロード

スクリプトをコピペして作るのが面倒な方は、管理者権限で以下スクリプトを実行すればダウンロードできます
PowerShell 3.0 な方は wget ではなく Invoke-WebRequest (Alias 入っていなかったはず)

if(-not (Test-Path C:\WindowsUpdate)){ md C:\WindowsUpdate }
wget http://www.vwnet.jp/Windows/PowerShell/ps1/autowindowsupdate.txt -OutFile C:\WindowsUpdate\AutoWindowsUpdate.ps1

 

ダウンロードした .ps1 の SHA256 のハッシュ値は以下です。

04FB68B37F227FB86DA01060B13AD68B8817227902A9B167B4B4F8A8212360BA

 

PowerShell Ver. 4 以降であれば、PowerShell でハッシュ確認できます

(Get-FileHash C:\WindowsUpdate\AutoWindowsUpdate.ps1 -Algorithm SHA256).Hash -eq "04FB68B37F227FB86DA01060B13AD68B8817227902A9B167B4B4F8A8212360BA"

 

スクリプトダウンロードと Windows Update を一気にするのなら、以下スクリプトを管理権限 PowerShell プロンプトにコピペします。

if(-not (Test-Path C:\WindowsUpdate)){ md C:\WindowsUpdate }
wget http://www.vwnet.jp/Windows/PowerShell/ps1/autowindowsupdate.txt -OutFile C:\WindowsUpdate\AutoWindowsUpdate.ps1
if( (Get-FileHash C:\WindowsUpdate\AutoWindowsUpdate.ps1 -Algorithm SHA256).Hash -eq "04FB68B37F227FB86DA01060B13AD68B8817227902A9B167B4B4F8A8212360BA" ){
C:\WindowsUpdate\AutoWindowsUpdate.ps1 full }

 

 

既知の問題と対策

30分以上待っても処理が進まない事があります。この対策は、Windows Update クライアントを更新すると改善します。
(Windows Update クライアントは、Windows Update で配布されるのですが、初めての Windows Update だとこれが古いままなので手動で最新に更新します)

Windows Update クライアントは以下キーワードで検索して最新版をダウンロードします。

Windows Update クライアント site:support.microsoft.com

 

ちなみに、これを書いているときの最新は以下の KB です。

Windows 7 および Windows Server 2008 R2 用 Windows Update クライアント: 2016 年 3 月
https://support.microsoft.com/ja-jp/kb/3138612

Windows Update Client for Windows 8.1 and Windows Server 2012 R2: February 2016
https://support.microsoft.com/ja-jp/kb/3135449

 

 

補助スクリプト

運用していて補助スクリプトが必要になったので追加で作りました。

機能は、AutoWindowsUpdate.ps1 を自動起動にセットして reboot するスクリプトです。

どんな時に使うかというと...

・いつまでも PowerShell プロンプト開いたままにしたくない
・リモートコンピューターに WU をかける

 

スクリプトダウンロードとハッシュ値は以下になります。

# スクリプトダウンロード
if(-not (Test-Path C:\WindowsUpdate)){ md C:\WindowsUpdate }
wget http://www.vwnet.jp/Windows/PowerShell/ps1/SubmitWU.txt -OutFile C:\WindowsUpdate\SubmitWU.ps1

 

SHA256 のハッシュ値
59FCD152440804103C5BF609821F8FF622E93B0CB67A2217493A72EA180AAD5F

 

 

関連情報

Windows Server 2016 インストール メディア に KB を適用する
http://www.vwnet.jp/Windows/WS16/2016101001/OfflineKBInstall4InstallISO.htm

 

 

back.gif (1980 バイト)

home.gif (1907 バイト)

Copyright © MURA All rights reserved.