برنامج 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 ، حيث تكون محطة العمل قيد التشغيل حاليًا.
عند تشغيل البرنامج النصي ، سيتم عرض المعلومات التالية:
- إصدار نظام التشغيل الحالي
- إصدار نظام التشغيل الحالي
- رقم إصدار نظام التشغيل الحالي
- التحديث المثبت الذي يتوافق مع رقم الإصدار هذا ، بالإضافة إلى رقم قاعدة المعارف ورابط لصفحة المعلومات
- آخر تحديث متوفر لإصدار نظام التشغيل
للحصول على معلومات التصحيح الحالية لنظام التشغيل 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 التي نشرتها (Windows)Microsoft لإصدار نظام التشغيل لديك باستخدام الأمر التالي:
Get-CurrentPatchInfo -ListAvailable
إذا كنت ترغب في استبعاد المعاينة(Preview) والتحديثات خارج النطاق(Out-of-band) من القائمة ولكن مع إدراج جميع تحديثات Windows التي نشرتها (Windows)Microsoft لإصدار نظام التشغيل الخاص بك ، فقم بتشغيل الأمر أدناه:
Get-CurrentPatchInfo -ListAvailable -ExcludePreview -ExcludeOutofBand
هذا هو!
اقرأ التالي(Read next) : يتيح لك موقع PowerShell Module Browser(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
Windows 10 Update and Shutdown/Restart لا يعمل ولن يذهب بعيدا
كيفية نشر التحديثات باستخدام Windows Update ل Business
فشل تثبيت Windows Update أو لن يتم تنزيله في Windows 11/10
كيفية إخفاء Windows Updates باستخدام PowerShell في Windows 10
Fix Windows Update error 0x80070659
كيفية تحديث منتجات Microsoft الأخرى باستخدام Windows Update
Fix Windows Update error 0x80070541 على ويندوز 10
ويندوز Update Medic Service (WaaSMedicSVC.exe) في Windows 10
يحتفظ Windows 10 بتقديم أو تثبيت نفس Update
Block Unsupported Hardware Popup في Windows Update
Fix Windows Update Error 0x80070005
Fix Windows Update Error C8000266؟
Fix error 0x8007042c ل Windows Update or Firewall
Fix ويندوز 10 Update Error 0x800703F1
ويندوز Update error 0x800F081F في ويندوز 10