Windows Updateの状態をクリア(Windows 10とWindows Server 2016)

前書き

MicrosoftのWSUSサポートチームが、Windows Updateが正常に実施できないときに実施する対処として、下記のブログを公開しています。

https://blogs.technet.microsoft.com/jpwsus/2014/12/02/windows-update-3/

上記に記載されている対処を、コマンドで一括で実行するバッチファイルを作成してみました。

対象OSは、1703以降のWindows 10Windows Server 2016です。(1703より前のバージョンのWindows 10は作成していません)

※※内容を確認の上、自己責任で実施ください※※
※※WSUSサポートの下記注意事項を引用します※※

・[更新履歴の表示] の情報がクリアされます。(作業履歴の情報ですので 現時点の適用状態や今後の適用動作には全く影響ありません)
・過去クライアント側の操作によって「非表示」設定(処理対象から除外)していた更新プログラムが存在する場合は、その設定が解除されます。
・次回 WSUS にアクセスした際にキャッシュされていた情報を再ダウンロードします。そのため、同時に多数の端末が実施した場合にはネットワークの負荷が発生する場合があります。

 

実行の内容

実行する内容は以下の通りです。

  1. 自動更新サービスとBITSサービスを停止する。
    ※停止するサービスは下記。
    “Background Intelligent Transfer Service”(サービス名:BITS)
    “Windows Update”サービス(サービス名:wuauserv)
    Windows Server 2016の場合は下記も追加で停止。
    “Data Sharing Service”(サービス名:DsSvc)
    “Update Orchestrator Service for Windows Update”(サービス名:UsoSvc)
  2. “%systemroot%\SoftwareDistribution.old\”フォルダの存在チェック(フォルダが存在する場合は削除する)
  3. “%systemroot%\SoftwareDistribution\”フォルダをリネームする。
  4. BITSのジョブを削除する(”%ALLUSERSPROFILE%\Microsoft\Network\Downloader\”フォルダの中身を削除)
  5. 自動更新サービスとBITSサービスを開始する。
    ※開始するサービスは下記。
    “Background Intelligent Transfer Service”(サービス名:BITS)
    “Windows Update”サービス(サービス名:wuauserv)
    Windows Server 2016の場合は下記も追加で開始。
    “Data Sharing Service”(サービス名:DsSvc)
    “Update Orchestrator Service for Windows Update”(サービス名:UsoSvc)
  6. 更新プログラム確認を実施する。

 




バッチファイルソースコード

バッチファイルのソースコードを記載します。コメントアウトの部分は緑字にしています。

次項にバッチファイルのダウンロードリンクを設けていますが、ソースコードだけ確認したい方はご覧ください。

※これらのコマンドを実行するときは、「管理者として実行」で起動したコマンドプロンプトで実行してください。

1703以降Windows 10用

echo off
REM 1703以降のWindows 10でWindows Updateの状態をクリアにするコマンド
REM 自動更新サービスとBITSサービスの停止
net stop wuauserv
net stop bits

REM "SoftwareDistribution.old"フォルダ存在チェック
if exist "%systemroot%\SoftwareDistribution.old\" (
	echo Distributionフォルダをを削除します。
	rd /s /q "%systemroot%\SoftwareDistribution.old\"
	goto LABEL_EXECUTE
	) else (
	goto LABEL_EXECUTE
	)

:LABEL_EXECUTE
REM SoftwareDistributionフォルダのリネーム("SoftwareDistribution"⇒"SoftwareDistribution.old")
ren %systemroot%\SoftwareDistribution SoftwareDistribution.old
REM BITSのジョブを削除
del /q %ALLUSERSPROFILE%\Microsoft\Network\Downloader\*

REM 自動更新サービスとBITSサービスの開始
net start bits
net start wuauserv

REM 更新プログラムの確認
usoclient startscan

 

Windows Server 2016用

echo off
REM Windows Server 2016でWindows Updateの状態をクリアにするコマンド
REM 自動更新サービスとBITSサービスの停止
net stop usosvc
net stop dosvc
net stop wuauserv
net stop bits

REM "SoftwareDistribution.old"フォルダ存在チェック
if exist "%systemroot%\SoftwareDistribution.old\" (
	echo Distributionフォルダをを削除します。
	rd /s /q "%systemroot%\SoftwareDistribution.old\"
	goto LABEL_EXECUTE
	) else (
	goto LABEL_EXECUTE
	)

:LABEL_EXECUTE
REM SoftwareDistributionフォルダのリネーム("SoftwareDistribution"⇒"SoftwareDistribution.old")
ren %systemroot%\SoftwareDistribution SoftwareDistribution.old
REM BITSのジョブを削除
del /q %ALLUSERSPROFILE%\Microsoft\Network\Downloader\*

REM 自動更新サービスとBITSサービスの開始
net start bits
net start wuauserv
net start dosvc
net start usosvc

REM 更新プログラム確認
usoclient startscan

 

バッチファイルダウンロード

前項のソースコードが書かれたバッチファイルは、以下のリンクからダウンロードできます。

実際に使用するときは、「管理者として実行」で実行してください。

1703以降Windows 10用

Windows Server 2016用