كيفية التحقق من انتظار إعادة التشغيل على كمبيوتر يعمل بنظام Windows

Kyfyt Althqq Mn Antzar A Adt Altshghyl Ly Kmbywtr Y Ml Bnzam Windows



عادةً ، بعد قيام المستخدم بتثبيت برنامج تشغيل أو تحديث (برنامج أو نظام) أو برنامج ، أو إجراء بعض تغييرات التكوين على جهاز عميل أو خادم يعمل بنظام Windows ، سيُطلب من المستخدم إعادة تشغيل النظام. في هذا المنشور ، سنرشدك عبر خطوات كيفية القيام بذلك تحقق من انتظار إعادة التشغيل على جهاز كمبيوتر يعمل بنظام Windows .



  كيفية التحقق من انتظار إعادة التشغيل على كمبيوتر يعمل بنظام Windows





كيفية التحقق من انتظار إعادة التشغيل على جهاز كمبيوتر يعمل بنظام Windows

عند الانتهاء من العديد من مهام نظام التشغيل Windows ، يضطر الكمبيوتر أحيانًا إلى طلب إعادة التشغيل. أثناء تسجيل الدخول وفي جلسة نشطة ، سيتم إخطارك بأن إعادة التشغيل معلقة أو مطلوبة من قبل بعض الصناديق المنبثقة أو الإشعارات - والتي يمكنك إما رفضها أو قبولها لإعادة تشغيل Windows. ولكن ، في بعض المواقف التي لا ترغب فيها أو لا يمكنك إعادة تشغيل الجهاز على الفور - على سبيل المثال ، لديك بعض الأعمال غير المكتملة التي تحتاج إلى إكمالها قبل إعادة التشغيل ، أو قمت للتو بتثبيت التحديثات على خادم إنتاج ويمكن لهذا الخادم سيتم إعادة التشغيل على الفور.





في مثل هذه السيناريوهات ، خاصة فيما يتعلق بالأخير ، قد تنسى إعادة التشغيل وتدرك في وقت لاحق أن بعض الخوادم أو أجهزة العميل بحاجة إلى إعادة التشغيل ولكنك الآن غير قادر على تحديد أي من الأجهزة - في هذه الحالة ، يمكنك أن تكون قادرًا على التحقق من انتظار إعادة التشغيل على جهاز كمبيوتر يعمل بنظام Windows باستخدام ملف بوويرشيل النصي.



سجل اللعب amd

الآن ، عندما تكون إعادة التشغيل معلقة ، سيضيف Windows بعض قيم التسجيل أو العلامات للإشارة إلى ذلك في موقع التسجيل التالي مع القيم والشروط المرتبطة كما هو موضح في الجدول أدناه.

مفتاح قيمة حالة
HKLM: \ SOFTWARE \ Microsoft \ Updates UpdateExeVolatile القيمة هي أي شيء بخلاف 0
HKLM: \ SYSTEM \ CurrentControlSet \ Control \ Session Manager PendingFileRenameOperations القيمة موجودة
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 DVDRebootSignal القيمة موجودة
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 \ Services \ Netlogon JoinDomain القيمة موجودة
HKLM: \ SYSTEM \ CurrentControlSet \ Services \ Netlogon AvoidSpnSet القيمة موجودة
HKLM: \ SYSTEM \ CurrentControlSet \ Control \ ComputerName \ ActiveComputerName اسم الحاسوب اسم الكمبيوتر القيمة في HKLM: \ 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
}
}
}

يمكنك توفير أي عدد تريده من الخوادم عبر اسم الحاسوب المعلمة في البرنامج النصي الذي سيعود حقيقي أو خطأ شنيع مع اسم الخادم. يمكنك تنفيذ سكربت مشابه لما يلي والتاكد PowerShell عن بعد تم إعداده ومتاحًا على الخوادم الخاصة بك.

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

يقرأ : كيفية جدولة برنامج PowerShell النصي في برنامج جدولة المهام

باستخدام البرنامج النصي PowerShell ، يمكنك الاستعلام عن أحد أجهزة الكمبيوتر الموجودة في المجال أو جميعها أو توفير أسماء الخادم يدويًا لتحديد الأجهزة التي تنتظر إعادة التشغيل. بمجرد تحديده ، يمكنك إعادة تشغيل الأجهزة على الفور أو إنشاء قائمة لإعادة التشغيل لاحقًا.

اقرأ الآن : كيفية إعادة تشغيل كمبيوتر Windows عن بعد باستخدام PowerShell

ماذا يعني أن إعادة تشغيل Windows معلقة؟

بشكل عام ، يحدث طلب إعادة التشغيل المعلق عندما يقوم أحد البرامج أو التثبيت بإجراء تغيير على الملفات أو مفاتيح التسجيل أو الخدمات أو إعدادات نظام التشغيل التي من المحتمل أن تترك النظام في حالة عابرة. في حالة حصولك على تم الكشف عن إعادة تشغيل معلقة ، فهو يشير ببساطة إلى أن التحديثات معلقة على الجهاز ويجب إجراء إعادة التشغيل قبل تثبيت أي تحديثات إضافية.

يقرأ :

  • كيفية تعطيل أو تمكين إعلام إعادة تشغيل التحديث
  • Windows Update معلق التثبيت أو التنزيل ، التهيئة ، إلخ

كيفية التحقق من عمليات إعادة التشغيل المعلقة في التسجيل؟

يمكنك القيام بذلك عن طريق البحث في سجل الويندوز ل إعادة تشغيل المطلوبة مفتاح. في الجدول أعلاه في هذا المنشور ، حددنا موقع التسجيل ذي الصلة لمفاتيح التسجيل المعلقة لإعادة التشغيل. إذا كنت ترغب في إظهار إشعار عندما يتطلب جهاز الكمبيوتر الخاص بك إعادة التشغيل لإكمال تثبيت تحديث Windows ، فانقر فوق يبدأ > إعدادات > التحديث والأمان > تحديثات Windows > خيارات متقدمة . بدّل الزر إلى تشغيل أو إيقاف تشغيل لـ اعرض إشعارًا عندما يتطلب جهاز الكمبيوتر الخاص بك إعادة التشغيل لإنهاء التحديث خيار.

اقرأ أيضا : هناك إصلاح معلق للنظام يتطلب إعادة التشغيل لإكماله .

المشاركات الشعبية