Сценарий PowerShell для проверки состояния Центра обновления Windows
Обычно пользователи, желающие узнать, установлено ли последнее накопительное обновление в их системе Windows 10, используют этот метод для проверки истории обновлений Windows 10 . В этом посте мы покажем вам, как получить текущую информацию об исправлениях для Windows 10 с помощью сценария PowerShell.(how to get current patch information for Windows 10 using a PowerShell script.)
Сценарий PowerShell(PowerShell) для проверки состояния Центра обновления Windows(Windows Update)
Сценарий PowerShell можно использовать, чтобы сообщить, какая сборка ОС установлена на компьютере с 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(PowerShell Module Browser site) позволяет выполнять поиск командлетов и пакетов.
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
Fix Windows Update error 0x80070659
Windows 10 продолжает предлагать или устанавливать тот же Update
Как сбросить компоненты Windows Update в Windows 11/10
Как скрыть Windows Updates, используя PowerShell в Windows 10
Как выключить автоматическую Windows Update в Windows 10
Error 0xc19001e1, Windows 10 Update не удалось установить
Windows Update не удалось установить или не загрузит в Windows 11/10
Fix 0x80071a2d Windows Update error
Fix Error 0x80072efe на Windows 10 Update Assistant
Как паузу Windows Update в Windows 10 до 365 дней
Fix Windows 10 Update Error 0x800703F1
Windows Update error 80072EFE на Windows 10
Windows Update застрял обновления в Windows 11/10
Windows Update не удалось установить с Error Code 0x8024004a
Fix Windows Update Error 0x80070005