Contents

Windows が「Windows の準備を整えています。コンピュータの電源を切らないでください」でスタックする

Contents

<本文>/images/computer-is-stuck-at-getting-windows-ready-dont.png

「Getting Windows Ready」というメッセージに遭遇したのはこれが初めてではありません。 Windows を再起動またはシャットダウンすると、「コンピュータの電源を切らないでください」というメッセージが表示され、この段階で数時間ハングします。この問題は、Windows Server 2022、2019、および 2016 ホストで、Windows 更新プログラムのインストール後、または役割と機能の追加/削除後に最もよく発生します (ただし、Windows 11 および 10 でも発生する可能性があります)。

このようなメッセージが表示された場合の主なアドバイスは、Windows が更新プログラムとコンポーネントのインストールを完了するまで辛抱強く待つことです。コンピューターに Windows 更新プログラムを定期的にインストールする場合、まれに、インストールが完了するまでに 1 時間以上かかることがあります。長期間アップデートをインストールしていない場合、またはコンピュータのパフォーマンスが低い場合は、インストールに数時間かかることがあります。

/images/computer-is-stuck-at-getting-windows-ready-dont.png

ただし、場合によっては、コンピュータが「Windows を準備しています」というメッセージが数時間、数日、あるいは無期限に表示されたままになることがあります。コンピューターを意図的にシャットダウンまたは再起動する必要がある場合は、プロセスを強制的に中断できます (もちろん、イメージの整合性に対するリスクはありますが、場合によっては、単に選択の余地がない場合もあります)。

Windows イメージが破損する可能性があるため、更新プログラムのインストール中にコンピューターの電源を切ることはお勧めできません。

次に、更新プログラムのインストール中またはイメージの準備中にフリーズしたコンピューター上のすべてのバックグラウンド プロセスを正常に終了する方法を見ていきます。

この方法の背後にある考え方は、画像サービスのこのフェーズ中にネットワーク経由でコンピュータにアクセスできるということです。 RDP 経由でコンピューターのデスクトップにリモートでアクセスすることはできませんが、管理ツールを使用してリモートで接続できます。

同じローカル ネットワーク (LAN) 上に別の Windows コンピュータが必要です。まず、「Windows の準備」段階で停止しているコンピューターにネットワーク経由でアクセスできること、および SMB ポート (445) が開いていることを確認します。

テスト-NetConnection 192.168.123.10-ポート 445

/images/test-netconnection-check-for-the-availability-of.png

サービス スナップイン (services.msc) を開き、問題のあるホストにリモートで接続します (アクション-> 別のコンピューターに接続-> リモート サーバーの名前または IP アドレスを指定)。

/images/manage-services-on-a-remote-computer.png

サービスのリストで Windows モジュール インストーラーを見つけます。このサービスは、「停止中」状態で停止することがよくあります。明らかに、このサービスは Windows の適切な再起動やシャットダウンを妨げているようです。

/images/cannot-stop-service-the-stop-option-is-grayed-ou.png

スナップイン GUI で TrustedInstaller サービスを管理するためのボタンは使用できません。停止したり、一時停止したりすることはできません。サービス実行可能ファイルの名前は、サービスのプロパティで確認できます (「 C:\Windows\servicing\TrustedInstaller.exe 」です)。

/images/trustedinstaller-service-is-stuck-at-stopping.png

ハングしたサービスを強制的に停止する場合は、リモート コンピュータのコマンド プロンプトを使用する必要があります。これには、PsExec ツールを使用できます。コンピューターでコマンド プロンプトを開き、次のコマンドを実行します。

PsExec.exe \\192.168.13.10-i-u localadminname powershell.exe

どこ:

  • 192.168.13.10 – リモート接続するコンピューターの名前または IP アドレス。

  • localadminname – リモート コンピューター上で管理者権限を持つアカウント (パスワードの入力を求められます)

  • -u localadminname を指定しない場合、現在のユーザーの資格情報がリモート コンピューターへの接続に使用されます (ドメイン環境に便利です)。

  • powershell.exe – リモート コンピューター上で PowerShell コンソールを開きます

/images/psexec-open-shell-on-remote-computer.png

コンピューター上に何があるか見てみましょう。 RAM 使用率の上位 10 プロセスをリストします。

取得プロセス |並べ替え-オブジェクト WorkingSet-降順 | Select-Object-First 10 名前、ID、@{Name="メモリ (MB)";式={数学::round($\_.WorkingSet/1MB, 2)}}

次に、CPU 使用率によって次のようになります。

取得プロセス |ソートオブジェクト CPU 降順 | Select-Object-First 10 名前、ID、@{Name="CPU 時間 (秒)";式={数学::round($\_.CPU, 2)}}

/images/high-cpu-and-ram-usage-by-tiworker-process.png

ここでわかるように、ホストでは「TiWorker.exe」プロセスによるリソースの使用率が高くなっています。 TiWorker プロセス (Trusted Installer Worker) は、Windows モジュール インストーラー ( TrustedInstaller ) サービスの主要コンポーネントです。このサービスは、更新プログラムと Windows システム コンポーネントの処理を担当します。

このプロセスの実行時間を確認します。

取得プロセス TiWorker |オブジェクト ID、名前、CPU、WorkingSet、StartTime を選択します

/images/get-process-run-time.png

どの Windows サービスが「停止中」状態のままになっているかを確認します。

Get-CimInstance-Class win32\_service | where-Object state-eq '停止保留'

/images/list-windows-service-hang-on-stopping.png

TrustedInstaller サービスとすべての関連コンポーネントを強制終了するには、次のコマンドを実行します。

taskkill/IM TrustedInstaller.exe/F

Windows コマンド シェルに接続しなくても、TrustedInstaller サービスをリモートで停止できます。次のコマンドを使用します。

pskill.exe \\192.168.13.10 TrustedInstaller.exe

または、接続のユーザー資格情報を指定する必要がある場合は、このコマンドを使用します。

taskkill.exe/s 192.168.13.10/u woshub\admin\_account/p MyPassw0rd!/im TrustedInstaller.exe

この後、停止したサーバーの画面に「シャットダウンしています」というメッセージが表示されます。数秒後、正しく再起動されるはずです。

/images/gracefully-shutting-down-windows.png

通常、TrustedInstaller サービス プロセスを強制終了することはお勧めできません。ただし、コンピューターが Windows の準備段階で異常に長時間停止したままになっている場合、唯一の実行可能なオプションは、強制的に再起動またはシャットダウンすることである可能性があります。

Windows を起動した後、オペレーティング システム イメージの整合性を確認します。 DISM と SFC を使用して、見つかったエラーを見つけて修復します。

dism.exe/online/cleanup-image/restorehealth

sfc/scannow

*️⃣ 出典リンク:

Test-NetConnection、 PsExec、Windows サービスが「停止中」状態でスタックしている、DISM と SFC を使用して検索して修復する、