KB4041691 および KB4041676 の被害に遭われた方が多いと思います。
WSUS のブログで対処方法が出ていましたが
一番対応がしづらいシナリオ3をバッチ化してみました。
実際の被害に遭っていないのでテストはしていませんが
今後、起動不可能になるパッチが出た場合、
これを仕込んで置けば、復旧が楽になるかと思いアップしました。
起動しないとリモート不可能なので大変です。
※ インストールメディア や セーフモード での起動に対応しました。
再起動後、OSが起動できない状態の場合にインストールの保留中を削除.cmd
@echo off
SetLocal EnableDelayedExpansion
rem /;
rem /; 2017 年 10 月にリリースされた Windows 10 1607 / 1703 向け更新プログラム適用後に OS 起動不可になる問題について (WSUS)
rem /; https://blogs.technet.microsoft.com/jpwsus/2017/10/12/nobootissue_wsus/
rem /;
rem /; シナリオ 3. 再起動し、起動できない状態になった場合
rem /;
rem /; 1. 何度か起動に失敗すると、青い自動修復画面が表示されますので、[詳細オプション] をクリックします。
rem /; 2. [トラブルシューティング] ? [詳細オプション] - [コマンド プロンプト] をクリックします。
rem /; →3. コマンドプロンプトで以下のコマンドを実行し、Software ハイブをマウントします。
rem /; →4. 以下のコマンドを実行し、レジストリ キーを削除します。
rem /; なお、環境によってはキーは存在しない場合がございますので、その際は次の手順に進んでください。
rem /; →5. 以下のコマンドを実行し、パッケージ情報を取得します。
rem /; →6. インストール済みのパッケージの一覧が表示されますので、状態が [保留中] となっているパッケージ ID を確認します。
rem /; →7. 手順 6 のパッケージ ID を使用して、以下のコマンドを実行し、削除します。
rem /; ⇒8. 保留中のパッケージをすべて削除しましたら、コマンドプロンプトを終了し、[続行] をクリックして再起動します。
rem /; ここまで ↑ ⇒ ここから手動
rem /;
rem /; -------------------------------------------------------------------------------------------------------------------
rem /; インストールメディア または WindowsPE で起動した場合、パッケージの削除後に「シャットダウン」
rem /; -------------------------------------------------------------------------------------------------------------------
rem /; 自動修復 または セーフモード で起動した場合、パッケージの削除後に「Exit」
rem /; -------------------------------------------------------------------------------------------------------------------
rem /;
rem /;
rem /; OS があるドライブを選択したい場合
rem /;
rem /; set OSドライブ= CDEFGHIJKL
rem /; choice /c %OSドライブ% /M "OS のドライブを指定して下さい ※ 通常は 「C」 その場合 「C」 キーを押す ⇒ "
rem /; call set OSドライブ=%%OSドライブ:~!errorlevel!,1%%
rem /;
rem /; REM /;Set OSドライブ=C
rem /;
rem /;
rem /; フルオート(ドライブ選択無し)の場合
rem /;
rem /; REM /; set OSドライブ= CDEFGHIJKL
rem /; REM /; choice /c %OSドライブ% /M "OS のドライブを指定して下さい ※ 通常は 「C」 その場合 「C」 キーを押す ⇒ "
rem /; REM /; call set OSドライブ=%%OSドライブ:~!errorlevel!,1%%
rem /;
rem /; Set OSドライブ=C
REM /; set OSドライブ= CDEFGHIJKL
REM /; choice /c %OSドライブ% /M "OS のドライブを指定して下さい ※ 通常は 「C」 その場合 「C」 キーを押す ⇒ "
REM /; call set OSドライブ=%%OSドライブ:~!errorlevel!,1%%
Set OSドライブ=C
reg load "HKLM\temp" "%OSドライブ%:\Windows\System32\config\software"
reg delete "HKLM\temp\Microsoft\Windows\CurrentVersion\Component Based Servicing\SessionsPending" /f /v "Exclusive"
reg unload "HKLM\temp"
Set Image=/Online
if "%WINDIR:~0,2%"=="X:" Set Image=/Image:%OSドライブ%:\
for /f "delims=" %%0 in ('Dism %Image% /ScratchDir:"%OSドライブ%:\Windows\temp" /Get-Packages') do (
set Msg=%%0
if "!Msg:~0,11!"=="パッケージ ID : " set "PackageID=!Msg:パッケージ ID : =!"
if "!Msg:~0,15!"=="状態 : インストールの保留中" Dism %Image% /ScratchDir:"%OSドライブ%:\Windows\temp" /Remove-Package /PackageName:"!PackageID!"
)
if "%WINDIR:~0,2%"=="X:" Wpeutil Shutdown
exit