สคริปต์ PowerShell เพื่อตรวจสอบสถานะ Windows Update
โดยปกติ ผู้ใช้ที่ต้องการทราบว่ามีการติดตั้งการอัปเดตแบบสะสมล่าสุดบนระบบ Windows 10 หรือไม่ ใช้วิธีนี้เพื่อตรวจสอบประวัติการอัปเดต Windows 10 ในโพสต์นี้ เราจะแสดงวิธีรับข้อมูลแพตช์ปัจจุบันสำหรับ Windows 10 โดยใช้สคริปต์ PowerShell(how to get current patch information for Windows 10 using a PowerShell script.)
(PowerShell)สคริปต์PowerShell เพื่อตรวจสอบ สถานะWindows Update
สคริปต์PowerShellสามารถใช้เพื่อรายงานว่าระบบปฏิบัติการใดที่สร้างคอมพิวเตอร์ Windows 10(Windows 10)ที่กำลังเปิดอยู่ รวมถึงการอัปเดตใดที่เป็นการอัปเดตล่าสุดสำหรับอุปกรณ์ นอกจากนี้ยังสามารถรายงาน การอัปเดต Windows ทั้งหมดที่ เผยแพร่สำหรับเวอร์ชันของWindows 10ที่เวิร์กสเตชันเปิดอยู่
เมื่อคุณเรียกใช้สคริปต์ ข้อมูลต่อไปนี้จะปรากฏขึ้น:
- ระบบปฏิบัติการเวอร์ชันปัจจุบัน
- OS รุ่นปัจจุบัน
- หมายเลขบิลด์ระบบปฏิบัติการปัจจุบัน
- การอัปเดตที่ติดตั้งซึ่งสอดคล้องกับหมายเลขบิลด์นั้น ตลอดจนหมายเลข KB และลิงก์ไปยังหน้าข้อมูล
- การอัปเดตล่าสุดที่มีสำหรับเวอร์ชัน OS
ในการรับข้อมูลแพตช์ปัจจุบันของWindows 10 โดยใช้สคริปต์ (Windows 10)PowerShellคุณต้องสร้างและเรียกใช้สคริปต์ PowerShell(create and run the PowerShell script)โดยใช้รหัสด้านล่างจากGithub
[CmdletBinding()] Param( [switch]$ListAllAvailable, [switch]$ExcludePreview, [switch]$ExcludeOutofBand ) $ProgressPreference = 'SilentlyContinue' $URI = "https://aka.ms/WindowsUpdateHistory" # Windows 10 release history Function Get-MyWindowsVersion { [CmdletBinding()] Param ( $ComputerName = $env:COMPUTERNAME ) $Table = New-Object System.Data.DataTable $Table.Columns.AddRange(@("ComputerName","Windows Edition","Version","OS Build")) $ProductName = (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion' -Name ProductName).ProductName Try { $Version = (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion' -Name ReleaseID -ErrorAction Stop).ReleaseID } Catch { $Version = "N/A" } $CurrentBuild = (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion' -Name CurrentBuild).CurrentBuild $UBR = (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion' -Name UBR).UBR $OSVersion = $CurrentBuild + "." + $UBR $TempTable = New-Object System.Data.DataTable $TempTable.Columns.AddRange(@("ComputerName","Windows Edition","Version","OS Build")) [void]$TempTable.Rows.Add($env:COMPUTERNAME,$ProductName,$Version,$OSVersion) Return $TempTable } Function Convert-ParsedArray { Param($Array) $ArrayList = New-Object System.Collections.ArrayList foreach ($item in $Array) { [void]$ArrayList.Add([PSCustomObject]@{ Update = $item.outerHTML.Split('>')[1].Replace('</a','').Replace('—',' - ') KB = "KB" + $item.href.Split('/')[-1] InfoURL = "https://support.microsoft.com" + $item.href OSBuild = $item.outerHTML.Split('(OS ')[1].Split()[1] # Just for sorting }) } Return $ArrayList } If ($PSVersionTable.PSVersion.Major -ge 6) { $Response = Invoke-WebRequest -Uri $URI -ErrorAction Stop } else { $Response = Invoke-WebRequest -Uri $URI -UseBasicParsing -ErrorAction Stop } If (!($Response.Links)) { throw "Response was not parsed as HTML"} $VersionDataRaw = $Response.Links | where {$_.outerHTML -match "supLeftNavLink" -and $_.outerHTML -match "KB"} $CurrentWindowsVersion = Get-MyWindowsVersion -ErrorAction Stop If ($ListAllAvailable) { If ($ExcludePreview -and $ExcludeOutofBand) { $AllAvailable = $VersionDataRaw | where {$_.outerHTML -match $CurrentWindowsVersion.'OS Build'.Split('.')[0] -and $_.outerHTML -notmatch "Preview" -and $_.outerHTML -notmatch "Out-of-band"} } ElseIf ($ExcludePreview) { $AllAvailable = $VersionDataRaw | where {$_.outerHTML -match $CurrentWindowsVersion.'OS Build'.Split('.')[0] -and $_.outerHTML -notmatch "Preview"} } ElseIf ($ExcludeOutofBand) { $AllAvailable = $VersionDataRaw | where {$_.outerHTML -match $CurrentWindowsVersion.'OS Build'.Split('.')[0] -and $_.outerHTML -notmatch "Out-of-band"} } Else { $AllAvailable = $VersionDataRaw | where {$_.outerHTML -match $CurrentWindowsVersion.'OS Build'.Split('.')[0]} } $UniqueList = (Convert-ParsedArray -Array $AllAvailable) | Sort OSBuild -Descending -Unique $Table = New-Object System.Data.DataTable [void]$Table.Columns.AddRange(@('Update','KB','InfoURL')) foreach ($Update in $UniqueList) { [void]$Table.Rows.Add( $Update.Update, $Update.KB, $Update.InfoURL ) } Return $Table } $CurrentPatch = $VersionDataRaw | where {$_.outerHTML -match $CurrentWindowsVersion.'OS Build'} | Select -First 1 If ($ExcludePreview -and $ExcludeOutofBand) { $LatestAvailablePatch = $VersionDataRaw | where {$_.outerHTML -match $CurrentWindowsVersion.'OS Build'.Split('.')[0] -and $_.outerHTML -notmatch "Out-of-band" -and $_.outerHTML -notmatch "Preview"} | Select -First 1 } ElseIf ($ExcludePreview) { $LatestAvailablePatch = $VersionDataRaw | where {$_.outerHTML -match $CurrentWindowsVersion.'OS Build'.Split('.')[0] -and $_.outerHTML -notmatch "Preview"} | Select -First 1 } ElseIf ($ExcludeOutofBand) { $LatestAvailablePatch = $VersionDataRaw | where {$_.outerHTML -match $CurrentWindowsVersion.'OS Build'.Split('.')[0] -and $_.outerHTML -notmatch "Out-of-band"} | Select -First 1 } Else { $LatestAvailablePatch = $VersionDataRaw | where {$_.outerHTML -match $CurrentWindowsVersion.'OS Build'.Split('.')[0]} | Select -First 1 } $Table = New-Object System.Data.DataTable [void]$Table.Columns.AddRange(@('OSVersion','OSEdition','OSBuild','CurrentInstalledUpdate','CurrentInstalledUpdateKB','CurrentInstalledUpdateInfoURL','LatestAvailableUpdate','LastestAvailableUpdateKB','LastestAvailableUpdateInfoURL')) [void]$Table.Rows.Add( $CurrentWindowsVersion.Version, $CurrentWindowsVersion.'Windows Edition', $CurrentWindowsVersion.'OS Build', $CurrentPatch.outerHTML.Split('>')[1].Replace('</a','').Replace('—',' - '), "KB" + $CurrentPatch.href.Split('/')[-1], "https://support.microsoft.com" + $CurrentPatch.href, $LatestAvailablePatch.outerHTML.Split('>')[1].Replace('</a','').Replace('—',' - '), "KB" + $LatestAvailablePatch.href.Split('/')[-1], "https://support.microsoft.com" + $LatestAvailablePatch.href ) Return $Table
คุณสามารถยกเว้น การ ดูตัวอย่าง(Preview)หรือ การอัปเดต นอกแบนด์(Out-of-band)ที่มีให้ซึ่งล่าสุดกว่าที่คุณติดตั้งไม่ให้รายงานเป็นการอัปเดตล่าสุดที่มีได้ ดังนั้นคุณจึงสามารถมุ่งเน้นไปที่การอัปเดตสะสมได้โดยการเรียกใช้คำสั่งด้านล่าง:
Get-CurrentPatchInfo -ExcludePreview -ExcludeOutofBand
คุณยังสามารถแสดงรายการ อัปเดต Windows ทั้งหมด ที่Microsoftเผยแพร่สำหรับเวอร์ชันระบบปฏิบัติการของคุณด้วยคำสั่งต่อไปนี้:
Get-CurrentPatchInfo -ListAvailable
หากคุณต้องการแยก การอัปเดต PreviewและOut-of-bandออกจากรายการ แต่แสดงรายการ อัปเดต Windows ทั้งหมด ที่Microsoftเผยแพร่สำหรับเวอร์ชัน OS ของคุณ ให้เรียกใช้คำสั่งด้านล่าง:
Get-CurrentPatchInfo -ListAvailable -ExcludePreview -ExcludeOutofBand
แค่นั้นแหละ!
อ่านต่อไป(Read next) : ไซต์เบราว์เซอร์โมดูล PowerShell(PowerShell Module Browser site)ให้คุณค้นหา cmdlets & แพ็คเกจ
Related posts
Reset Windows Update Client ใช้ PowerShell Script
ปุ่มปัญหา Fix บน Windows Update page
แนวทางปฏิบัติที่ดีที่สุดในการปรับปรุง Windows Update installation ครั้ง
สถานที่ค้นหาและวิธีการอ่าน Windows Update log ใน Windows 11/10
วิธีการแก้ไข Windows Update error 0x80240061
Win Update Stop: ปิดใช้งาน Windows Updates บน Windows 10
Fix 0x80071a2d Windows Update error
New องค์ประกอบใน Windows 10 version 20H2 October 2020 Update
Fix Windows 10 Update Error 0x800703F1
Fix Windows Update Error C8000266?
วิธีการซ่อน Windows Updates โดยใช้ PowerShell ใน Windows 10
Windows 10 Update and Shutdown/Restart ไม่ทำงานและจะไม่หายไป
Fix Windows Update error 0x8e5e03fa บน Windows 10
วิธีการแก้ไข Windows Update Error Code 0x80070012
วิธีการ Fix Windows Update Error Code 80244010
วิธีปรับใช้การอัปเดตโดยใช้ Windows Update สำหรับ Business
Windows Update ไม่สามารถติดตั้งหรือไม่ดาวน์โหลดใน Windows 11/10
Windows Update error 80072EFE บน Windows 10
Fix Windows Update Error 0x80070005
Windows Update ข้อผิดพลาด 0x800705B4, 0x8024402F, 0x80070422 [Fixed}