اسکریپت PowerShell برای بررسی وضعیت Windows Update
معمولاً، کاربرانی که می خواهند بدانند آیا آخرین به روز رسانی تجمعی در سیستم ویندوز 10 آنها نصب شده است یا خیر، از این روش برای بررسی تاریخچه به روز رسانی ویندوز 10 استفاده می کنند. در این پست به شما نشان خواهیم داد که چگونه با استفاده از یک اسکریپت PowerShell اطلاعات پچ فعلی ویندوز 10 را دریافت کنید.(how to get current patch information for Windows 10 using a PowerShell script.)
(PowerShell)اسکریپت PowerShell برای بررسی وضعیت Windows Update
از اسکریپت PowerShell می توان برای گزارش سیستم عاملی که یک رایانه ویندوز 10(Windows 10) در حال حاضر روی آن استفاده می شود و همچنین اینکه کدام به روز رسانی آخرین به روز رسانی موجود برای دستگاه است، استفاده می شود. همچنین میتواند در مورد تمام بهروزرسانیهای ویندوز(Windows) منتشر شده برای نسخه ویندوز 10(Windows 10) که ایستگاه کاری در حال حاضر روی آن است، گزارش دهد.
هنگامی که اسکریپت را اجرا می کنید، اطلاعات زیر نمایش داده می شود:
- نسخه فعلی سیستم عامل
- نسخه فعلی سیستم عامل
- شماره ساخت سیستم عامل فعلی
- بهروزرسانی نصبشده مربوط به آن شماره ساخت و همچنین شماره KB و پیوندی به صفحه اطلاعات
- آخرین به روز رسانی موجود برای نسخه سیستم عامل
برای دریافت اطلاعات وصله فعلی ویندوز 10 با استفاده از اسکریپت (Windows 10)PowerShell ، باید اسکریپت PowerShell را با استفاده از کد زیر از Github ایجاد و اجرا(create and run the PowerShell script) کنید .
[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) برای نسخه سیستم عامل شما منتشر کرده است فهرست کنید، دستور زیر را اجرا کنید:
Get-CurrentPatchInfo -ListAvailable -ExcludePreview -ExcludeOutofBand
خودشه!
در ادامه بخوانید(Read next) : سایت مرورگر ماژول PowerShell(PowerShell Module Browser site) به شما امکان می دهد cmdlet ها و بسته ها را جستجو کنید.
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 Update نصب نشد یا در Windows 11/10 دانلود نشد
Block Unsupported Hardware Popup در Windows Update
Fix ویندوز 10 Update Error 0x800703F1
نصب Windows Update با error code 0x8024200D نصب نشد
ویندوز Update خطاهای 0x800705b4، 0x8024402f، 0x80070422 [Fixed}
چگونه به Fix Windows Update Error Code 80244010
نحوه مدیریت یا توقف Windows 10 Update با استفاده از WAU Manager
New ویژگی های Windows 10 version 20H2 October 2020 Update
چگونه Fix Windows Update Error 0xc1900201
Fix Windows Update Error 0x800f0989 در ویندوز 11/10
ویندوز 10 Update and Shutdown/Restart کار نمی کند و نمی خواهد برود
ویندوز Update Client با error 0x8024001f شناسایی نشد
ویندوز Update Error 0X800B0101، Installer با خطا مواجه شد
Fix Windows Update error 0x80240439 در ویندوز 10
رفع Windows Update service نمی تواند متوقف شود