Sådan tjekker du for afventende genstart på Windows-computer

Sadan Tjekker Du For Afventende Genstart Pa Windows Computer



Normalt, efter at en bruger har installeret en driver, en opdatering (software eller system) eller software eller foretager nogle konfigurationsændringer på en Windows-klient eller servermaskine, vil brugeren blive bedt om at genstarte systemet. I dette indlæg vil vi guide dig gennem trinene til, hvordan du gør tjek for Ventende genstart på en Windows-computer .



  Sådan tjekker du for afventende genstart på Windows-computer





Sådan tjekker du for afventende genstart på en Windows-computer

Efter afslutning af mange Windows OS-opgaver er computeren nogle gange tvunget til at kræve en genstart. Mens du er logget ind og i en aktiv session, vil du blive underrettet om, at en genstart afventer eller påkrævet af en pop op-boks eller meddelelse - som du enten kan afvise eller acceptere for at genstarte Windows. Men i nogle situationer, hvor du ikke ønsker eller ikke umiddelbart kan genstarte maskinen — for eksempel har du noget ufærdigt arbejde, du skal udføre, før du genstarter, eller du har lige installeret opdateringer på en produktionsserver, og den server kan ikke genstartes med det samme.





I scenarier som dette, især når det drejer sig om sidstnævnte, kan du glemme alt om genstarten og på et senere tidspunkt indse, at nogle servere eller klientmaskiner skal genstartes, men du er nu ikke i stand til at identificere hvilken af ​​maskinerne - i denne situation, du kan være i stand til at tjekke for Ventende genstart på Windows-computer ved hjælp af en PowerShell manuskript.



Nu, når en genstart afventer, tilføjer Windows nogle registreringsværdier eller flag for at indikere det på følgende registreringsdatabaseplacering med de tilknyttede værdier og betingelser som vist i tabellen nedenfor.

Nøgle Værdi Tilstand
HKLM:\SOFTWARE\Microsoft\Updates UpdateExeVolatile Værdien er alt andet end 0
HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager PendingFileRenameOperations værdi findes
HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager PendingFileRenameOperations2 værdi findes
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired AT nøgle findes
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Services\Pending AT Der findes alle GUID-undernøgler
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\PostRebootReporting AT nøgle findes
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce DVDRebootSignal værdi findes
HKLM:\Software\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending AT nøgle findes
HKLM:\Software\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootInProgress AT nøgle findes
HKLM:\Software\Microsoft\Windows\CurrentVersion\Component Based Servicing\PackagesPending AT nøgle findes
HKLM:\SOFTWARE\Microsoft\ServerManager\CurrentRebootAttempts AT nøgle findes
HKLM:\SYSTEM\CurrentControlSet\Services\Netlogon JoinDomain værdi findes
HKLM:\SYSTEM\CurrentControlSet\Services\Netlogon UndgåSpnSet værdi findes
HKLM:\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName Computernavn Værdi ComputerName i HKLM:\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName er anderledes

Da vi har identificeret de relevante registreringsstier, kan du i stedet for manuelt at kæmme gennem registreringsdatabasen, fordi du glemmer at kontrollere en registreringssti eller bare glemmer, hvilke du skal kontrollere. skabe og køre et Check-PendingReboot.ps1-script ved hjælp af koden nedenfor for at automatisere opgaven for at kontrollere alle registreringsdatabasenøglerne i tabellen ovenfor.

hvordan man installerer apache på Windows 10

  Opret og kør PowerShell-script



[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
}
}
}

Du kan levere så mange servere som du vil via Computernavn parameter i scriptet, som vil returnere Rigtigt eller Falsk sammen med servernavnet. Du kan udføre scriptet svarende til det følgende og sikre dig PowerShell fjernbetjening er sat op og tilgængelig på dine servere.

PS51> .\Test-PendingReboot.ps1 -Server SRV1,SRV2,SRV3,etc

Læs : Sådan planlægges PowerShell-script i Task Scheduler

Ved at bruge PowerShell-scriptet kan du forespørge på en eller alle computere i domænet eller manuelt angive servernavnene for at bestemme maskinerne, der afventer en genstart. Når de er identificeret, kan du derefter genstarte maskinerne med det samme eller lave en liste for at genstarte senere.

undtagelsen ukendt softwareundtagelse

Læs nu : Sådan fjernstartes Windows-computeren ved hjælp af PowerShell

Hvad betyder det, at en Windows-genstart afventer?

Generelt opstår en afventende genstartsanmodning, når et program eller en installation foretager en ændring af filer, registreringsnøgler, tjenester eller operativsystemindstillinger, hvilket potentielt efterlader systemet i en forbigående tilstand. I tilfældet får du En afventende genstart er blevet registreret meddelelse, angiver det blot, at der afventer opdateringer på maskinen, og en genstart skal udføres, før yderligere opdateringer kan installeres.

Læs :

  • Sådan deaktiveres eller aktiveres opdateringsgenstartsmeddelelse
  • Windows Update afventer installation eller download, initialisering osv

Hvordan kontrollerer man afventende genstarter i registreringsdatabasen?

Du kan gøre dette ved søgning i Windows-registreringsdatabasen for Genstart påkrævet nøgle. I tabellen ovenfor i dette indlæg har vi identificeret den relevante placering i registreringsdatabasen for afventende genstart af registreringsdatabasenøgler. Hvis du vil vise en meddelelse, når din pc kræver en genstart for at fuldføre en Windows-opdateringsinstallation, skal du klikke Start > Indstillinger > Opdatering og sikkerhed > Windows-opdateringer > Avancerede indstillinger . Slå knappen til eller fra for Vis en meddelelse, når din pc kræver en genstart for at afslutte opdateringen mulighed.

Læs også : Der afventer en systemreparation, som kræver en genstart for at fuldføre .

Populære Indlæg