Windows 컴퓨터에서 보류 중인 재부팅을 확인하는 방법

Windows Keompyuteoeseo Bolyu Jung In Jaebuting Eul Hwag Inhaneun Bangbeob



일반적으로 사용자가 드라이버, 업데이트(소프트웨어 또는 시스템) 또는 소프트웨어를 설치하거나 Windows 클라이언트 또는 서버 시스템에서 일부 구성을 변경한 후 사용자에게 시스템을 재부팅하라는 메시지가 표시됩니다. 이 게시물에서는 방법에 대한 단계를 안내합니다. Windows 컴퓨터에서 보류 중인 재부팅 확인 .



  Windows 컴퓨터에서 보류 중인 재부팅을 확인하는 방법





Windows 컴퓨터에서 보류 중인 재부팅을 확인하는 방법

많은 Windows OS 작업을 완료하면 컴퓨터를 강제로 재부팅해야 하는 경우가 있습니다. 로그인되어 활성 세션에 있는 동안 재부팅이 보류 중이거나 일부 팝업 상자 또는 알림에 의해 필요하다는 알림이 표시됩니다. 이 알림을 닫거나 수락하여 Windows를 다시 시작할 수 있습니다. 그러나 시스템을 즉시 재부팅하고 싶지 않거나 즉시 재부팅할 수 없는 일부 상황에서는 예를 들어 다시 시작하기 전에 완료해야 하는 완료되지 않은 작업이 있거나 프로덕션 서버에 방금 업데이트를 설치했는데 해당 서버에서 다음을 수행할 수 있습니다. 바로 재부팅하지 마십시오.





이와 같은 시나리오에서, 특히 후자와 관련하여 재부팅을 잊고 나중에 일부 서버 또는 클라이언트 시스템을 재부팅해야 하지만 현재 어떤 시스템을 식별할 수 없음을 깨닫게 될 수 있습니다. 다음을 사용하여 Windows 컴퓨터에서 보류 중인 재부팅을 확인할 수 있습니다. 파워셸 스크립트.



macrium은 무료 리뷰를 반영

이제 재부팅이 보류 중인 경우 Windows는 아래 표에 표시된 관련 값 및 조건과 함께 다음 레지스트리 위치에 일부 레지스트리 값 또는 플래그를 추가하여 이를 표시합니다.

열쇠 상태
HKLM:\소프트웨어\마이크로소프트\업데이트 UpdateExeVolatile 값은 0 이외의 값입니다.
HKLM:\SYSTEM\CurrentControlSet\Control\세션 관리자 보류 중인 파일 이름 바꾸기 작업 가치가 존재한다
HKLM:\SYSTEM\CurrentControlSet\Control\세션 관리자 보류 중인파일이름변경작업2 가치가 존재한다
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\자동 업데이트\RebootRequired 저것 키가 존재합니다
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Services\Pending 저것 모든 GUID 하위 키가 존재합니다.
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\자동 업데이트\PostRebootReporting 저것 키가 존재합니다
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce DVD 재부팅 신호 가치가 존재한다
HKLM:\Software\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending 저것 키가 존재합니다
HKLM:\Software\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootInProgress 저것 키가 존재합니다
HKLM:\Software\Microsoft\Windows\CurrentVersion\Component Based Servicing\PackagesPending 저것 키가 존재합니다
HKLM:\SOFTWARE\Microsoft\ServerManager\CurrentRebootAttempts 저것 키가 존재합니다
HKLM:\SYSTEM\CurrentControlSet\서비스\Netlogon 조인도메인 가치가 존재한다
HKLM:\SYSTEM\CurrentControlSet\서비스\Netlogon AvoidSpnSet 가치가 존재한다
HKLM:\SYSTEM\CurrentControlSet\Control\컴퓨터 이름\활성 컴퓨터 이름 컴퓨터 이름 HKLM:\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName의 ComputerName 값이 다름

관련 레지스트리 경로를 확인했으므로 하나의 레지스트리 경로를 확인하는 것을 잊거나 확인해야 할 경로를 잊어버릴 수 있기 때문에 레지스트리를 수동으로 샅샅이 뒤지는 대신 다음을 수행할 수 있습니다. 생성 및 실행 아래 코드를 사용하여 위 표의 모든 레지스트리 키를 확인하는 작업을 자동화하는 Check-PendingReboot.ps1 스크립트.

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

다음을 통해 원하는 만큼의 서버를 제공할 수 있습니다. 컴퓨터 이름 반환할 스크립트의 매개변수 진실 또는 거짓 서버 이름과 함께. 다음과 유사한 스크립트를 실행하고 다음을 확인할 수 있습니다. PowerShell 원격 서버에서 설정되고 사용할 수 있습니다.

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

읽다 : 작업 스케줄러에서 PowerShell 스크립트를 예약하는 방법

빈 페이지 URL

PowerShell 스크립트를 사용하여 도메인에 있는 하나 또는 모든 컴퓨터를 쿼리하거나 수동으로 서버 이름을 제공하여 재부팅 보류 중인 컴퓨터를 확인할 수 있습니다. 식별되면 시스템을 즉시 재부팅하거나 나중에 재부팅할 목록을 만들 수 있습니다.

이제 읽기 : PowerShell을 사용하여 Windows 컴퓨터를 원격으로 다시 시작하는 방법

Windows 재부팅이 보류 중이라는 것은 무엇을 의미합니까?

일반적으로 보류 중인 재부팅 요청은 프로그램이나 설치가 파일, 레지스트리 키, 서비스 또는 운영 체제 설정을 변경하여 잠재적으로 시스템을 일시적인 상태로 만들 때 발생합니다. 당신이 얻는 경우에 보류 중인 재부팅이 감지되었습니다. 알림은 단순히 컴퓨터에서 업데이트가 보류 중이며 추가 업데이트를 설치하려면 재부팅을 수행해야 함을 나타냅니다.

읽다 :

  • 업데이트 다시 시작 알림을 비활성화 또는 활성화하는 방법
  • Windows 업데이트 설치 또는 다운로드 보류 중, 초기화 중 등

레지스트리에서 보류 중인 재부팅을 확인하는 방법은 무엇입니까?

당신은 이것을 할 수 있습니다 Windows 레지스트리 검색 ~을 위해 재부팅 필요 열쇠. 이 게시물의 위 표에서 보류 중인 재부팅 레지스트리 키에 대한 관련 레지스트리 위치를 식별했습니다. Windows 업데이트 설치를 완료하기 위해 PC를 다시 시작해야 할 때 알림을 표시하려면 시작 > 설정 > 업데이트 및 보안 > 윈도우 업데이트 > 고급 옵션 . 버튼을 켜거나 끕니다. 업데이트를 완료하기 위해 PC를 다시 시작해야 할 때 알림 표시 옵션.

또한 읽기 : 완료하려면 재부팅해야 하는 보류 중인 시스템 복구가 있습니다. .

인기 게시물