PowerShell を使用して再起動保留ステータスを持つコンピューターを検索する
<本文>
Windows に特定のパッチまたはセキュリティ更新プログラムをインストールした後、それらを有効にするために再起動が必要になる場合があります。ただし、ユーザーがコンピューターの再起動を継続的に延期した場合、または更新後の自動再起動がサーバー/ワークステーションで無効になっている場合 (たとえば、Windows Update グループ ポリシー経由)、ホストには再起動が保留されるまで、インストールされているが適用されていない更新プログラムが残る可能性があります。大規模な企業ネットワークでは、数十台のデバイスが数週間にわたって PendingReboot ステータスのままになることがよくあり、重大な運用上の課題が生じます。更新プログラムのインストール後に再起動を待機しているネットワーク上のコンピューターを見つける方法を見てみましょう。
私の場合、Windows Server ホストは更新プログラムのインストールを完了しましたが、まだ再起動していません。 Windows Update コントロール パネルに「再起動の保留中」ステータスが表示されます。

PowerShell ギャラリーの PendingReboot モジュールを使用して、コンピューターの保留中の再起動ステータスをクエリできます。この PowerShell モジュールをインストールするには、次のコマンドを実行します。
インストールモジュール名保留中の再起動
コンピュータを再起動する必要があるかどうかを確認します。
テスト保留中の再起動
IsRebootPending: True

- Detailed オプションを追加すると、コマンドレットは保留中の再起動の理由 (更新プログラムのインストール、ドメインへの参加、役割と機能のインストール/削除によるものなど) を含む追加情報を表示します。
テスト保留中再起動詳細

ComponentBasedServicing : TruePendingComputerRenameDomainJoin : FalsePendingFileRenameOperations : FalsePendingFileRenameOperationsValue :SystemCenterConfigManager :WindowsUpdateAutoUpdate : TrueIsRebootPending : True
Invoke-Command コマンドレット (PowerShell リモート処理を有効にして構成する必要があります) を使用して、リモート コンピューターで再起動が必要かどうかを確認できます。
Invoke-Command-ComputerName m-dc01-ScriptBlock {Test-PendingReboot}
追加の PowerShell モジュールをインストールしたくない場合は、レジストリで保留中の再起動のステータスを確認できます。次のレジストリ キーにエントリが存在する場合は、再起動が必要であることを示しています。
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPendingHKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequiredHKLM\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperationsHKLM\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations2
たとえば、次のコマンドを使用して、保留中の再起動エントリを確認できます。
Get-Item 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired'-ErrorAction SilentlyContinue

このパラメーターが RebootRequired レジストリ キーの下に存在する場合、ホストの再起動が必要であることを示します。

これらのレジストリ キー内のパラメーターの存在を確認する PowerShell 関数の例を次に示します。
` 関数 Get-PendingReboot {
param(string[]$ComputerName=“ローカルホスト”)
foreach ($ComputerName の $Computer) {
$HKLM=Microsoft.Win32.RegistryKey::OpenRemoteBaseKey(‘LocalMachine’, $Computer)
$CBS=$HKLM.OpenSubKey(‘SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending’)
$WU=$HKLM.OpenSubKey(‘SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired’)
$SM=$HKLM.OpenSubKey(‘SYSTEM\CurrentControlSet\Control\Session Manager’)
$Rename=$SM.GetValue(‘PendingFileRenameOperations’)
$Rename2=$SM.GetValue(‘PendingFileRenameOperations2’)
PSカスタムオブジェクト@{
コンピューター=$コンピューター
RebootNeeded=bool
}
}
} `
この機能を使用すると、ローカル コンピュータの再起動が必要かどうかを確認できます。複数のリモート マシンの保留中の再起動ステータスを一度に確認することもできます。
Get-PendingReboot "m-fs01","m-fs02","m-dc01"

Windows Update のインストールが失敗したために Windows が再起動を要求し続ける場合は、保留中の更新を手動でキャンセルし、保留中の再起動ループを停止できます。
*️⃣ 出典リンク:
Windows Update グループ ポリシー、ドメインへの参加、Invoke-Command、PowerShell リモート処理を有効にして構成する必要がある、 、 Windows が再起動を要求し続ける、