
Après avoir installé certains correctifs ou mises à jour de sécurité sur Windows, un redémarrage peut être nécessaire pour qu’ils prennent effet. Cependant, si les utilisateurs reportent continuellement le redémarrage de leurs ordinateurs ou si le redémarrage automatique après les mises à jour est désactivé sur les serveurs/postes de travail (par exemple, via la stratégie de groupe Windows Update), les hôtes peuvent conserver les mises à jour installées mais non appliquées en attendant un redémarrage. Dans les réseaux des grandes entreprises, des dizaines d’appareils restent souvent bloqués à l’état PendingReboot pendant des semaines, ce qui pose un défi opérationnel important. Voyons comment trouver les ordinateurs du réseau qui attendent un redémarrage après l’installation des mises à jour.
Dans mon cas, l’hôte Windows Server a terminé l’installation des mises à jour mais n’a pas encore redémarré. Il affiche un état de redémarrage en attente dans le panneau de configuration Windows Update.

Le module PendingReboot de PowerShell Gallery peut être utilisé pour interroger l’état de redémarrage en attente d’un ordinateur. Pour installer ce module PowerShell, exécutez la commande :
Nom du module d'installation en attente de redémarrage
Vérifiez si votre ordinateur nécessite un redémarrage :
Test-PendingReboot
IsRebootPending: True

L’ajout de l’option -Detailed entraîne l’affichage par l’applet de commande d’informations supplémentaires, notamment la raison du redémarrage en attente (qu’il soit dû à l’installation de mises à jour, à l’adhésion à un domaine ou à l’installation/suppression de rôles et de fonctionnalités).
Test-PendingReboot-Détaillé

ComponentBasedServicing : TruePendingComputerRenameDomainJoin : FalsePendingFileRenameOperations : FalsePendingFileRenameOperationsValue :SystemCenterConfigManager :WindowsUpdateAutoUpdate : TrueIsRebootPending : True
Vous pouvez utiliser l’applet de commande Invoke-Command (PowerShell Remoting doit être activé et configuré) pour vérifier si un redémarrage est requis sur un ordinateur distant.
Invoke-Command-ComputerName m-dc01-ScriptBlock {Test-PendingReboot}
Si vous ne souhaitez pas installer de modules PowerShell supplémentaires, vous pouvez vérifier l’état du redémarrage en attente dans le registre. La présence d’entrées dans les clés de registre suivantes indique qu’un redémarrage est requis :
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
Par exemple, vous pouvez utiliser la commande ci-dessous pour rechercher une entrée de redémarrage en attente :
Get-Item 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired'-ErrorAction SilentlyContinue

Si le paramètre est présent sous la clé de registre RebootRequired, cela indique que l’hôte nécessite un redémarrage.

Voici un exemple de fonction PowerShell pour vérifier la présence de paramètres dans ces clés de registre :
` fonction Get-PendingReboot {
param(string[]$ComputerName=“localhost”)
foreach ($Ordinateur dans $ComputerName) {
$HKLM=Microsoft.Win32.RegistryKey::OpenRemoteBaseKey(‘LocalMachine’, $Computer)
$CBS=$HKLM.OpenSubKey(‘LOGICIEL\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending’)
$WU=$HKLM.OpenSubKey(‘LOGICIEL\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired’)
$SM=$HKLM.OpenSubKey(‘SYSTEM\CurrentControlSet\Control\Session Manager’)
$Rename=$SM.GetValue(‘PendingFileRenameOperations’)
$Rename2=$SM.GetValue(‘PendingFileRenameOperations2’)
PSCustomObject@{
Ordinateur=$Ordinateur
RebootNeeded=bool
}
}
} `
Cette fonction vous permettra de vérifier si l’ordinateur local nécessite un redémarrage. Vous pouvez également vérifier l’état de redémarrage en attente sur plusieurs machines distantes à la fois.
Get-PendingReboot "m-fs01", "m-fs02", "m-dc01"

Si Windows demande constamment un redémarrage en raison d’un échec d’installation de Windows Update, vous pouvez annuler manuellement la mise à jour en attente et arrêter la boucle de redémarrage en attente.
*️⃣ Lien source :
Stratégie de groupe Windows Update, rejoindre un domaine, Invoke-Command, PowerShell Remoting doit être activé et configuré, , , Windows demande constamment un redémarrage,