विंडोज कंप्यूटर पर पेंडिंग रिबूट की जांच कैसे करें

Vindoja Kampyutara Para Pendinga Ributa Ki Janca Kaise Karem



आमतौर पर, उपयोगकर्ता द्वारा ड्राइवर, अपडेट (सॉफ़्टवेयर या सिस्टम), या सॉफ़्टवेयर स्थापित करने के बाद, या Windows क्लाइंट या सर्वर मशीन पर कुछ कॉन्फ़िगरेशन परिवर्तन करने के बाद, उपयोगकर्ता को सिस्टम को रिबूट करने के लिए कहा जाएगा। इस पोस्ट में, हम आपको चरणों के बारे में बताएंगे कि कैसे करें विंडोज कंप्यूटर पर लंबित रीबूट की जांच करें .



  विंडोज कंप्यूटर पर पेंडिंग रिबूट की जांच कैसे करें





विंडोज कंप्यूटर पर पेंडिंग रिबूट की जांच कैसे करें

कई विंडोज ओएस कार्यों के पूरा होने पर, कभी-कभी कंप्यूटर को रीबूट करने की आवश्यकता होती है। लॉग इन और एक सक्रिय सत्र में, आपको सूचित किया जाएगा कि रिबूट लंबित है या कुछ पॉपअप बॉक्स या अधिसूचना द्वारा आवश्यक है - जिसे आप या तो खारिज कर सकते हैं या विंडोज को पुनरारंभ करने के लिए स्वीकार कर सकते हैं। लेकिन, कुछ स्थितियों में जहां आप नहीं चाहते हैं या मशीन को तुरंत रिबूट नहीं कर सकते हैं - उदाहरण के लिए, आपके पास कुछ अधूरा काम है जिसे आपको पुनरारंभ करने से पहले पूरा करने की आवश्यकता है, या आपने अभी-अभी प्रोडक्शन सर्वर पर अपडेट इंस्टॉल किए हैं और वह सर्वर कर सकता है तुरंत रीबूट नहीं किया जाना चाहिए।





इस तरह के परिदृश्यों में, विशेष रूप से जब यह उत्तरार्द्ध की बात आती है, तो आप रीबूट के बारे में भूल सकते हैं और बाद में महसूस कर सकते हैं कि कुछ सर्वर या क्लाइंट मशीनों को रीबूट करने की आवश्यकता है लेकिन अब आप यह पहचानने में असमर्थ हैं कि कौन सी मशीन - इस स्थिति में, आप विंडोज कंप्यूटर पर पेंडिंग रिबूट की जांच करने में सक्षम हो सकते हैं पावरशेल लिखी हुई कहानी।



अब, जब एक रिबूट लंबित है, तो विंडोज़ नीचे दी गई तालिका में दिखाए गए अनुसार संबंधित मूल्यों और शर्तों के साथ निम्न रजिस्ट्री स्थान पर इंगित करने के लिए कुछ रजिस्ट्री मान या फ़्लैग जोड़ देगा।

चाबी कीमत स्थिति
HKLM:\SOFTWARE\Microsoft\Updates UpdateExe अस्थिर मान 0 के अलावा कुछ भी है
HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager लंबित फ़ाइल नाम बदलें मूल्य मौजूद है
HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager लंबित फ़ाइल नाम बदलें ऑपरेशन 2 मूल्य मौजूद है
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired वह कुंजी मौजूद है
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Services\Pending वह कोई GUID उपकुंजियाँ मौजूद हैं
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\PostRebootReporting वह कुंजी मौजूद है
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce DVDरीबूटसिग्नल मूल्य मौजूद है
HKLM:\Software\Microsoft\Windows\CurrentVersion\Component आधारित सर्विसिंग\RebootPending वह कुंजी मौजूद है
HKLM:\Software\Microsoft\Windows\CurrentVersion\Component Based सर्विसिंग\RebootInProgress वह कुंजी मौजूद है
HKLM:\Software\Microsoft\Windows\CurrentVersion\Component Based सर्विसिंग\PackagesPending वह कुंजी मौजूद है
HKLM:\SOFTWARE\Microsoft\ServerManager\CurrentRebootAttempts वह कुंजी मौजूद है
एचकेएलएम:\सिस्टम\करंटकंट्रोलसेट\सर्विसेज\नेटलॉगऑन डोमेन में शामिल हों मूल्य मौजूद है
एचकेएलएम:\सिस्टम\करंटकंट्रोलसेट\सर्विसेज\नेटलॉगऑन SpnSet से बचें मूल्य मौजूद है
एचकेएलएम:\सिस्टम\करंटकंट्रोलसेट\कंट्रोल\कंप्यूटरनाम\एक्टिवकंप्यूटरनाम कंप्यूटर का नाम HKLM में मान ComputerName:\SYSTEM\CurrentControlSet\Control\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
}
}
}

आप के माध्यम से जितने चाहें उतने सर्वर प्रदान कर सकते हैं कंप्यूटर का नाम स्क्रिप्ट में पैरामीटर जो वापस आ जाएगा सत्य या असत्य सर्वर नाम के साथ। आप निम्न के समान स्क्रिप्ट निष्पादित कर सकते हैं और सुनिश्चित कर सकते हैं पॉवरशेल रिमोटिंग सेट अप है और आपके सर्वर पर उपलब्ध है।

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

पढ़ना : टास्क शेड्यूलर में पावरशेल स्क्रिप्ट को कैसे शेड्यूल करें

PowerShell स्क्रिप्ट का उपयोग करके, आप डोमेन में एक या सभी कंप्यूटरों को क्वेरी कर सकते हैं या रिबूट के लिए लंबित मशीनों को निर्धारित करने के लिए मैन्युअल रूप से सर्वर नाम प्रदान कर सकते हैं। एक बार पहचानने के बाद, आप तुरंत मशीनों को रीबूट कर सकते हैं या बाद में रीबूट करने के लिए एक सूची बना सकते हैं।

अब पढ़ो : PowerShell का उपयोग करके Windows कंप्यूटर को दूरस्थ रूप से कैसे पुनरारंभ करें

इसका क्या मतलब है कि विंडोज रिबूट लंबित है?

आम तौर पर, एक लंबित रिबूट अनुरोध तब होता है जब कोई प्रोग्राम या इंस्टॉलेशन फ़ाइलों, रजिस्ट्री कुंजियों, सेवाओं या ऑपरेटिंग सिस्टम सेटिंग्स में बदलाव करता है, जिससे सिस्टम को अस्थायी स्थिति में छोड़ दिया जाता है। मामले में आपको मिलता है एक लंबित रीबूट का पता चला है अधिसूचना, यह केवल इंगित करता है कि अद्यतन मशीन पर लंबित हैं और किसी भी अतिरिक्त अद्यतन को स्थापित करने से पहले रीबूट किया जाना चाहिए।

पढ़ना :

  • अद्यतन पुनरारंभ अधिसूचना को अक्षम या सक्षम कैसे करें
  • विंडोज अपडेट लंबित इंस्टॉल या डाउनलोड, इनिशियलाइज़िंग, आदि

रजिस्ट्री में लंबित रिबूट की जांच कैसे करें?

आप इसके द्वारा कर सकते हैं विंडोज रजिस्ट्री खोज के लिए रिबूट करने की आवश्यकता है चाबी। इस पोस्ट में उपरोक्त तालिका में, हमने लंबित रीबूट रजिस्ट्री कुंजियों के लिए प्रासंगिक रजिस्ट्री स्थान की पहचान की है। यदि आप एक अधिसूचना दिखाना चाहते हैं जब आपके पीसी को विंडोज अपडेट इंस्टॉलेशन को पूरा करने के लिए पुनरारंभ करने की आवश्यकता होती है, तो क्लिक करें शुरू > समायोजन > अद्यतन और सुरक्षा > विंडोज अपडेट > उन्नत विकल्प . के लिए बटन को चालू या बंद पर टॉगल करें जब आपके पीसी को अपडेट करने के लिए पुनरारंभ करने की आवश्यकता हो तो एक सूचना दिखाएं विकल्प।

यह भी पढ़ें : एक सिस्टम मरम्मत लंबित है जिसे पूरा करने के लिए रीबूट की आवश्यकता है .

लोकप्रिय पोस्ट