この不親切な手順に救援を

KB4041691 および KB4041676 の被害に遭われた方が多いと思います。
WSUS のブログで対処方法が出ていましたが
一番対応がしづらいシナリオ３をバッチ化してみました。
実際の被害に遭っていないのでテストはしていませんが
今後、起動不可能になるパッチが出た場合、
これを仕込んで置けば、復旧が楽になるかと思いアップしました。
起動しないとリモート不可能なので大変です。

※ インストールメディア や セーフモード での起動に対応しました。

```bat
再起動後、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 /; 自動修復             または セーフモード で起動した場合、パッケージの削除後に「Ｅｘｉｔ」
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
```