Di solito, dopo che un utente ha installato un driver, un aggiornamento (software o sistema) o un software o ha apportato alcune modifiche alla configurazione su un computer client o server Windows, all'utente verrà richiesto di riavviare il sistema. In questo post ti guideremo attraverso i passaggi su come farloverificare la presenza di Riavvio in sospeso su un computer Windows.

Al completamento di molte attività del sistema operativo Windows, a volte il computer è costretto a richiedere un riavvio. Una volta effettuato l'accesso e in una sessione attiva, riceverai una notifica che un riavvio è in sospeso o richiesto da una finestra popup o da una notifica, che puoi ignorare o accettare per riavviare Windows. Tuttavia, in alcune situazioni in cui non vuoi o non puoi riavviare immediatamente la macchina, ad esempio, hai del lavoro incompiuto che devi completare prima di riavviare o hai appena installato gli aggiornamenti su un server di produzione e quel server non può essere riavviato immediatamente.
In scenari come questo, soprattutto per quanto riguarda quest'ultimo, potresti dimenticare il riavvio e in un secondo momento realizzare che alcuni server o macchine client devono essere riavviate ma ora non sei in grado di identificare quale delle macchine: in questa situazione, puoi essere in grado di controllare il riavvio in sospeso sul computer Windows utilizzando unsceneggiatura.
Ora, quando è in sospeso un riavvio, Windows aggiungerà alcuni valori o flag di registro per indicarlo nella seguente posizione del registro con i valori e le condizioni associati come mostrato nella tabella seguente.
| Chiave | Valore | Condizione |
| HKLM:\SOFTWARE\Microsoft\Aggiornamenti | UpdateExeVolatile | Il valore è qualsiasi cosa diversa da 0 |
| HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager | PendingFileRenameOperations | il valore esiste |
| HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager | PendingFileRenameOperations2 | il valore esiste |
| HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Aggiornamento automatico\RebootRequired | QUELLO | la chiave esiste |
| HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Services\Pending | QUELLO | Esistono eventuali sottochiavi GUID |
| HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Aggiornamento automatico\PostRebootReporting | QUELLO | la chiave esiste |
| HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce | Segnale di riavvio DVD | il valore esiste |
| HKLM:\Software\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending | QUELLO | la chiave esiste |
| HKLM:\Software\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootInProgress | QUELLO | la chiave esiste |
| HKLM:\Software\Microsoft\Windows\CurrentVersion\Component Based Servicing\PackagesPending | QUELLO | la chiave esiste |
| HKLM:\SOFTWARE\Microsoft\ServerManager\CurrentRebootAttempts | QUELLO | la chiave esiste |
| HKLM:\SYSTEM\CurrentControlSet\Services\Netlogon | Partecipa al dominio | il valore esiste |
| HKLM:\SYSTEM\CurrentControlSet\Services\Netlogon | EvitaSpnSet | il valore esiste |
| HKLM:\SYSTEM\CurrentControlSet\Control\NomeComputer\NomeComputerAttivo | NomeComputer | Il valore NomeComputer in HKLM:\SYSTEM\CurrentControlSet\Control\NomeComputer\NomeComputer è diverso |
Poiché abbiamo identificato i percorsi del registro rilevanti, invece di scorrere manualmente il registro perché potresti dimenticare di controllare un percorso del registro o semplicemente dimenticare quali controllare, puoiuno script Check-PendingReboot.ps1 che utilizza il codice seguente per automatizzare l'attività di controllo di tutte le chiavi di registro nella tabella precedente.

[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
}
}
}Puoi fornire tutti i server che desideri tramite il fileNomeComputerparametro nello script che restituiràVEROOFalsoinsieme al nome del server. Puoi eseguire lo script simile al seguente e assicurartiServizi remoti di PowerShellè configurato e disponibile sui tuoi server.
PS51> .\Test-PendingReboot.ps1 -Server SRV1,SRV2,SRV3,etc
Leggere:
Utilizzando lo script PowerShell, è possibile eseguire query su uno o tutti i computer nel dominio o fornire manualmente i nomi dei server per determinare le macchine in attesa di riavvio. Una volta identificati, è possibile riavviare subito le macchine o creare un elenco da riavviare in seguito.
Ora leggi:
Cosa significa che è in sospeso un riavvio di Windows?
In genere, una richiesta di riavvio in sospeso si verifica quando un programma o un'installazione apporta una modifica a file, chiavi di registro, servizi o impostazioni del sistema operativo lasciando potenzialmente il sistema in uno stato temporaneo. Nel caso in cui ottieni ilÈ stato rilevato un riavvio in sospesonotifica, indica semplicemente che gli aggiornamenti sono in sospeso sulla macchina ed è necessario eseguire un riavvio prima di poter installare eventuali aggiornamenti aggiuntivi.
Leggere:
Come controllare i riavvii in sospeso nel registro?
Puoi farlo tramiteper ilRiavvio richiestochiave. Nella tabella sopra in questo post, abbiamo identificato la posizione del registro pertinente per le chiavi di registro di riavvio in sospeso. Se desideri mostrare una notifica quando il tuo PC richiede un riavvio per completare l'installazione di un aggiornamento di Windows, fai clic suInizio>Impostazioni>Aggiornamento e sicurezza>Aggiornamenti di Windows>Opzioni avanzate. Attiva o disattiva il pulsante perMostra una notifica quando il PC richiede un riavvio per completare l'aggiornamentoopzione.
Leggi anche:.











![[Suggerimento per Firefox] Ripristina il classico indicatore di focus con contorno tratteggiato per i collegamenti](https://media.askvg.com/articles/images8/Disable_New_Solid_Blue_Focus_Indicator_Restore_Classic_Dotted_Outline_Ring_Firefox.png)
![Il driver ASIO.SYS non può caricare su questo dispositivo [Fix]](https://elsefix.com/tech/tejana/wp-content/uploads/2025/03/AsIO.sys-Driver-cannot-load-on-this-device.jpg)
