ค้นหาคอมพิวเตอร์ที่มีสถานะรอการรีบูตโดยใช้ PowerShell

/th/images/windows-update-shows-pending-restart.png

หลังจากติดตั้งแพตช์หรือการอัปเดตความปลอดภัยบางอย่างบน Windows อาจจำเป็นต้องรีสตาร์ทจึงจะมีผล อย่างไรก็ตาม หากผู้ใช้เลื่อนการรีบูตคอมพิวเตอร์อย่างต่อเนื่อง หรือหากการรีบูตอัตโนมัติหลังจากการอัพเดตถูกปิดใช้งานบนเซิร์ฟเวอร์/เวิร์กสเตชัน (เช่น ผ่านนโยบายกลุ่มของ Windows Update) โฮสต์อาจยังคงอยู่โดยได้รับการติดตั้งแล้ว แต่การอัปเดตที่ไม่ได้ใช้อยู่ระหว่างรอการรีสตาร์ท ในเครือข่ายองค์กรขนาดใหญ่ อุปกรณ์หลายสิบเครื่องมักจะติดอยู่ในสถานะ PendingReboot เป็นเวลาหลายสัปดาห์ ทำให้เกิดความท้าทายในการปฏิบัติงานอย่างมาก มาดูวิธีค้นหาคอมพิวเตอร์บนเครือข่ายที่กำลังรอการรีบูตหลังจากติดตั้งการอัปเดต

ในกรณีของฉัน โฮสต์ Windows Server ได้ติดตั้งการอัปเดตเรียบร้อยแล้ว แต่ยังไม่ได้รีบูต มันแสดงสถานะการรีสตาร์ทที่รอดำเนินการในแผงควบคุม Windows Update

/th/images/windows-update-shows-pending-restart.png.webp

โมดูล PendingReboot จาก PowerShell Gallery สามารถใช้เพื่อค้นหาสถานะการรีสตาร์ทที่รอดำเนินการของคอมพิวเตอร์ หากต้องการติดตั้งโมดูล PowerShell นี้ ให้รันคำสั่ง:

ติดตั้ง-โมดูล-ชื่อ รอการรีบูต

ตรวจสอบว่าคอมพิวเตอร์ของคุณจำเป็นต้องรีสตาร์ทหรือไม่:

รอการทดสอบรีบูต


IsRebootPending: True

/th/images/test-pendingreboot-powershell-cmdlet.png.webp

การเพิ่มตัวเลือกรายละเอียดจะทำให้ cmdlet แสดงข้อมูลเพิ่มเติม รวมถึงเหตุผลสำหรับการรีบูตที่ค้างอยู่ (ไม่ว่าจะเป็นเพราะการติดตั้งการอัปเดต การเข้าร่วมโดเมน หรือการติดตั้ง/การลบบทบาทและฟีเจอร์)

ทดสอบรอการรีบูตโดยละเอียด

/th/images/test-pendingreboot-detailed-status.png.webp


ComponentBasedServicing : TruePendingComputerRenameDomainJoin : FalsePendingFileRenameOperations : FalsePendingFileRenameOperationsValue :SystemCenterConfigManager :WindowsUpdateAutoUpdate : TrueIsRebootPending : True

คุณสามารถใช้ Invoke-Command cmdlet (ต้องเปิดใช้งานและกำหนดค่า PowerShell Remoting) เพื่อตรวจสอบว่าจำเป็นต้องรีบูตบนคอมพิวเตอร์ระยะไกลหรือไม่

เรียกใช้-Command-ชื่อคอมพิวเตอร์ m-dc01-ScriptBlock {การทดสอบรอดำเนินการรีบูต}

หากคุณไม่ต้องการติดตั้งโมดูล PowerShell เพิ่มเติม คุณสามารถตรวจสอบสถานะของการรีบูตที่รอดำเนินการในรีจิสทรีได้ การมีอยู่ของรายการในรีจิสทรีคีย์ต่อไปนี้บ่งชี้ว่าจำเป็นต้องรีสตาร์ท:

  • HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Component ตามการบริการ\RebootPending
  • HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired
  • HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations
  • HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations2

ตัวอย่างเช่น คุณสามารถใช้คำสั่งด้านล่างเพื่อตรวจสอบรายการรีบูตที่รอดำเนินการ:

รับรายการ 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired'-ErrorAction SilentlyContinue

/th/images/powershell-check-if-the-restart-is-required.png.webp

หากมีพารามิเตอร์อยู่ใต้คีย์รีจิสทรี RebootRequired แสดงว่าโฮสต์จำเป็นต้องรีบูต

/th/images/check-for-rebootrequired-registry-key.png.webp

นี่คือตัวอย่างของฟังก์ชัน PowerShell เพื่อตรวจสอบการมีอยู่ของพารามิเตอร์ในรีจิสทรีคีย์เหล่านี้:

` ฟังก์ชั่น รับรอรีบูต {

พารามิเตอร์(string[]$ComputerName=“localhost”)

foreach ($คอมพิวเตอร์ใน $ComputerName) {

$HKLM=Microsoft.Win32.RegistryKey::OpenRemoteBaseKey(‘LocalMachine’, $คอมพิวเตอร์)

$CBS=$HKLM.OpenSubKey(‘SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending’)

$WU=$HKLM.OpenSubKey(‘SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired’)

$SM=$HKLM.OpenSubKey(‘SYSTEM\CurrentControlSet\Control\Session Manager’)

$Rename=$SM.GetValue(‘PendingFileRenameOperations’)

$Rename2=$SM.GetValue(‘PendingFileRenameOperations2’)

PSCustomObject@{

คอมพิวเตอร์=$คอมพิวเตอร์

RebootNeeded=บูล

}

}

} `

ฟังก์ชั่นนี้จะช่วยให้คุณตรวจสอบว่าคอมพิวเตอร์ในระบบจำเป็นต้องรีบูตหรือไม่ คุณยังสามารถตรวจสอบสถานะการรีบูตที่รอดำเนินการบนเครื่องระยะไกลหลายเครื่องพร้อมกันได้

รับรอรีบูต "m-fs01", "m-fs02", "m-dc01"

/th/images/get-pendingreboot-state-from-remote-computers.png.webp

หาก Windows แจ้งให้รีสตาร์ทอย่างต่อเนื่องเนื่องจากการติดตั้ง Windows Update ล้มเหลว คุณสามารถยกเลิกการอัปเดตที่รอดำเนินการด้วยตนเองและหยุดลูปการรีสตาร์ทที่ค้างอยู่ได้

*️⃣ ลิงค์ที่มา:

นโยบายกลุ่ม Windows Update, เข้าร่วมโดเมน, เรียกใช้คำสั่ง, ต้องเปิดใช้งานและกำหนดค่า PowerShell Remoting, , , Windows แจ้งให้รีสตาร์ทอย่างต่อเนื่อง