Comment vérifier le redémarrage en attente sur un ordinateur Windows

Comment Verifier Le Redemarrage En Attente Sur Un Ordinateur Windows



Habituellement, après qu'un utilisateur installe un pilote, une mise à jour (logicielle ou système) ou un logiciel, ou apporte des modifications à la configuration sur un client ou un serveur Windows, l'utilisateur sera invité à redémarrer le système. Dans cet article, nous vous expliquerons les étapes à suivre pour vérifier le redémarrage en attente sur un ordinateur Windows .



feed de actividad de xbox one

  Comment vérifier le redémarrage en attente sur un ordinateur Windows





Comment vérifier le redémarrage en attente sur un ordinateur Windows

À la fin de nombreuses tâches du système d'exploitation Windows, l'ordinateur est parfois obligé d'exiger un redémarrage. Lorsque vous êtes connecté et dans une session active, vous serez averti qu'un redémarrage est en attente ou requis par une fenêtre contextuelle ou une notification - que vous pouvez soit ignorer, soit accepter de redémarrer Windows. Mais, dans certaines situations où vous ne voulez pas ou ne pouvez pas redémarrer immédiatement la machine - par exemple, vous avez un travail inachevé que vous devez terminer avant de redémarrer, ou vous venez d'installer des mises à jour sur un serveur de production et ce serveur peut 't être redémarré tout de suite.





Dans des scénarios comme celui-ci, en particulier en ce qui concerne ce dernier, vous pouvez oublier le redémarrage et vous rendre compte plus tard que certains serveurs ou machines clientes doivent être redémarrées, mais vous ne pouvez plus identifier laquelle des machines - dans cette situation, vous pouvez vérifier si le redémarrage est en attente sur un ordinateur Windows à l'aide d'un PowerShell scénario.



Désormais, lorsqu'un redémarrage est en attente, Windows ajoutera des valeurs de registre ou des indicateurs pour l'indiquer à l'emplacement de registre suivant avec les valeurs et conditions associées, comme indiqué dans le tableau ci-dessous.

Clé Valeur Condition
HKLM:\SOFTWARE\Microsoft\Updates UpdateExeVolatile La valeur est autre que 0
HKLM :\SYSTEM\CurrentControlSet\Control\Session Manager PendingFileRenameOperationsPendingFileRenameOperations la valeur existe
HKLM :\SYSTEM\CurrentControlSet\Control\Session Manager PendingFileRenameOperations2 la valeur existe
HKLM :\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired CE la clé existe
HKLM :\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Services\En attente CE Toutes les sous-clés GUID existent
HKLM :\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\PostRebootReporting CE la clé existe
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce DVDRebootSignal la valeur existe
HKLM :\Software\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending CE la clé existe
HKLM :\Software\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootInProgress CE la clé existe
HKLM :\Software\Microsoft\Windows\CurrentVersion\Component Based Servicing\PackagesPending CE la clé existe
HKLM:\SOFTWARE\Microsoft\ServerManager\CurrentRebootAttempts CE la clé existe
HKLM :\SYSTEM\CurrentControlSet\Services\Netlogon JoinDomain la valeur existe
HKLM :\SYSTEM\CurrentControlSet\Services\Netlogon ÉviterSpnSet la valeur existe
HKLM :\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName Nom de l'ordinateur La valeur ComputerName dans HKLM:\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName est différente

Comme nous avons identifié les chemins de registre pertinents, au lieu de parcourir manuellement le registre car vous risquez d'oublier de vérifier un chemin de registre ou simplement d'oublier lesquels vérifier, vous pouvez créer et exécuter un script Check-PendingReboot.ps1 utilisant le code ci-dessous pour automatiser la tâche de vérification de toutes les clés de registre dans le tableau ci-dessus.

  Créer et exécuter un script PowerShell



[CmdletBinding()]
param(
[Parameter(Mandatory)]
[ValidateNotNullOrEmpty()]
[string[]]$ComputerName,
[Parameter()]
[ValidateNotNullOrEmpty()]
[pscredential]$Credential
)
$ErrorActionPreference = 'Stop'
$scriptBlock = {
$VerbosePreference = $using:VerbosePreference
function Test-RegistryKey {
[OutputType('bool')]
[CmdletBinding()]
param
(
[Parameter(Mandatory)]
[ValidateNotNullOrEmpty()]
[string]$Key
)
$ErrorActionPreference = 'Stop'
if (Get-Item -Path $Key -ErrorAction Ignore) {
$true
}
}
function Test-RegistryValue {
[OutputType('bool')]
[CmdletBinding()]
param
(
[Parameter(Mandatory)]
[ValidateNotNullOrEmpty()]
[string]$Key,
[Parameter(Mandatory)]
[ValidateNotNullOrEmpty()]
[string]$Value
)
$ErrorActionPreference = 'Stop'
if (Get-ItemProperty -Path $Key -Name $Value -ErrorAction Ignore) {
$true
}
}
function Test-RegistryValueNotNull {
[OutputType('bool')]
[CmdletBinding()]
param
(
[Parameter(Mandatory)]
[ValidateNotNullOrEmpty()]
[string]$Key,
[Parameter(Mandatory)]
[ValidateNotNullOrEmpty()]
[string]$Value
)
$ErrorActionPreference = 'Stop'
if (($regVal = Get-ItemProperty -Path $Key -Name $Value -ErrorAction Ignore) -and $regVal.($Value)) {
$true
}
}
# Added "test-path" to each test that did not leverage a custom function from above since
# an exception is thrown when Get-ItemProperty or Get-ChildItem are passed a nonexistant key path
$tests = @(
{ Test-RegistryKey -Key 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending' }
{ Test-RegistryKey -Key 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootInProgress' }
{ Test-RegistryKey -Key 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired' }
{ Test-RegistryKey -Key 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Component Based Servicing\PackagesPending' }
{ Test-RegistryKey -Key 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\PostRebootReporting' }
{ Test-RegistryValueNotNull -Key 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager' -Value 'PendingFileRenameOperations' }
{ Test-RegistryValueNotNull -Key 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager' -Value 'PendingFileRenameOperations2' }
{ 
# Added test to check first if key exists, using "ErrorAction ignore" will incorrectly return $true
'HKLM:\SOFTWARE\Microsoft\Updates' | Where-Object { test-path $_ -PathType Container } | ForEach-Object { 
(Get-ItemProperty -Path $_ -Name 'UpdateExeVolatile' | Select-Object -ExpandProperty UpdateExeVolatile) -ne 0 
}
}
{ Test-RegistryValue -Key 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce' -Value 'DVDRebootSignal' }
{ Test-RegistryKey -Key 'HKLM:\SOFTWARE\Microsoft\ServerManager\CurrentRebootAttemps' }
{ Test-RegistryValue -Key 'HKLM:\SYSTEM\CurrentControlSet\Services\Netlogon' -Value 'JoinDomain' }
{ Test-RegistryValue -Key 'HKLM:\SYSTEM\CurrentControlSet\Services\Netlogon' -Value 'AvoidSpnSet' }
{
# Added test to check first if keys exists, if not each group will return $Null
# May need to evaluate what it means if one or both of these keys do not exist
( 'HKLM:\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName' | Where-Object { test-path $_ } | %{ (Get-ItemProperty -Path $_ ).ComputerName } ) -ne 
( 'HKLM:\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName' | Where-Object { Test-Path $_ } | %{ (Get-ItemProperty -Path $_ ).ComputerName } )
}
{
# Added test to check first if key exists
'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Services\Pending' | Where-Object { 
(Test-Path $_) -and (Get-ChildItem -Path $_) } | ForEach-Object { $true }
}
)
foreach ($test in $tests) {
Write-Verbose "Running scriptblock: [$($test.ToString())]"
if (& $test) {
$true
break
}
}
}
foreach ($computer in $ComputerName) {
try {
$connParams = @{
'ComputerName' = $computer
}
if ($PSBoundParameters.ContainsKey('Credential')) {
$connParams.Credential = $Credential
}
$output = @{
ComputerName = $computer
IsPendingReboot = $false
}
$psRemotingSession = New-PSSession @connParams
if (-not ($output.IsPendingReboot = Invoke-Command -Session $psRemotingSession -ScriptBlock $scriptBlock)) {
$output.IsPendingReboot = $false
}
[pscustomobject]$output
} catch {
Write-Error -Message $_.Exception.Message
} finally {
if (Get-Variable -Name 'psRemotingSession' -ErrorAction Ignore) {
$psRemotingSession | Remove-PSSession
}
}
}

Vous pouvez fournir autant de serveurs que vous le souhaitez via le Nom de l'ordinateur paramètre dans le script qui renverra Vrai ou FAUX avec le nom du serveur. Vous pouvez exécuter le script similaire au suivant et vous assurer que Accès à distance PowerShell est configuré et disponible sur vos serveurs.

¿Cómo habilito Adobe Flash Player?
PS51> .\Test-PendingReboot.ps1 -Server SRV1,SRV2,SRV3,etc

Lire : Comment planifier un script PowerShell dans le planificateur de tâches

En utilisant le script PowerShell, vous pouvez interroger un ou tous les ordinateurs du domaine ou fournir manuellement les noms de serveur pour déterminer les machines en attente d'un redémarrage. Une fois identifié, vous pouvez alors redémarrer les machines tout de suite ou faire une liste pour redémarrer plus tard.

Maintenant lis : Comment redémarrer à distance un ordinateur Windows à l'aide de PowerShell

Qu'est-ce que cela signifie qu'un redémarrage de Windows est en attente ?

Généralement, une demande de redémarrage en attente se produit lorsqu'un programme ou une installation modifie des fichiers, des clés de registre, des services ou des paramètres du système d'exploitation, laissant potentiellement le système dans un état transitoire. Dans le cas où vous obtenez le Un redémarrage en attente a été détecté notification, cela indique simplement que des mises à jour sont en attente sur la machine et qu'un redémarrage doit être effectué avant que des mises à jour supplémentaires puissent être installées.

Lire :

cómo recuperar notas adhesivas eliminadas
  • Comment désactiver ou activer la notification de redémarrage de mise à jour
  • Mise à jour Windows en attente d'installation ou de téléchargement, initialisation, etc.

Comment vérifier les redémarrages en attente dans le registre ?

Vous pouvez le faire en recherche dans le registre Windows pour le Redémarrage nécessaire clé. Dans le tableau ci-dessus dans cet article, nous avons identifié l'emplacement de registre pertinent pour les clés de registre de redémarrage en attente. Si vous souhaitez afficher une notification lorsque votre PC nécessite un redémarrage pour terminer l'installation d'une mise à jour Windows, cliquez sur Commencer > Paramètres > Mise à jour et sécurité > Mises à jour Windows > Options avancées . Activez ou désactivez le bouton pour Afficher une notification lorsque votre PC nécessite un redémarrage pour terminer la mise à jour option.

A lire aussi : Il y a une réparation du système en attente qui nécessite un redémarrage pour se terminer .

Articles Populaires