Skrypt PowerShell do sprawdzania stanu Windows Update
Zwykle użytkownicy, którzy chcą dowiedzieć się, czy najnowsza zbiorcza aktualizacja jest zainstalowana w ich systemie Windows 10, korzystają z tej metody, aby sprawdzić historię aktualizacji systemu Windows 10 . W tym poście pokażemy, jak uzyskać aktualne informacje o poprawce dla systemu Windows 10 za pomocą skryptu PowerShell.(how to get current patch information for Windows 10 using a PowerShell script.)
Skrypt PowerShell(PowerShell) do sprawdzania stanu Windows Update
Skrypt programu PowerShell może służyć do zgłaszania, na którym kompilacji systemu operacyjnego jest obecnie zainstalowany komputer z systemem Windows 10(Windows 10) , a także która aktualizacja jest najnowszą aktualizacją dostępną dla urządzenia. Może również raportować wszystkie aktualizacje systemu Windows(Windows) opublikowane dla wersji systemu Windows 10 , na której aktualnie znajduje się stacja robocza.
Po uruchomieniu skryptu zostaną wyświetlone następujące informacje:
- Aktualna wersja systemu operacyjnego
- Bieżąca wersja systemu operacyjnego
- Aktualny numer kompilacji systemu operacyjnego
- Zainstalowana aktualizacja, która odpowiada numerowi kompilacji, a także numerowi KB i linkowi do strony informacyjnej
- Najnowsza dostępna aktualizacja wersji systemu operacyjnego
Aby uzyskać aktualne informacje o poprawce systemu Windows 10 za pomocą skryptu (Windows 10)PowerShell , musisz utworzyć i uruchomić skrypt PowerShell(create and run the PowerShell script) przy użyciu poniższego kodu z usługi Github(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
Możesz wykluczyć dostępne aktualizacje w wersji zapoznawczej(Preview) lub poza pasmem(Out-of-band) , które są nowsze niż te, które zainstalowałeś, aby były zgłaszane jako najnowsza dostępna aktualizacja, dzięki czemu możesz po prostu skupić się na aktualizacjach zbiorczych, uruchamiając poniższe polecenie:
Get-CurrentPatchInfo -ExcludePreview -ExcludeOutofBand
Możesz również wyświetlić listę wszystkich aktualizacji systemu Windows(Windows) opublikowanych przez firmę Microsoft dla Twojej wersji systemu operacyjnego za pomocą następującego polecenia :(Microsoft)
Get-CurrentPatchInfo -ListAvailable
Jeśli chcesz wykluczyć aktualizacje Preview i Out-of-band z listy, ale wyświetlić listę wszystkich aktualizacji systemu Windows opublikowanych przez firmę (Windows)Microsoft dla Twojej wersji systemu operacyjnego, uruchom poniższe polecenie:
Get-CurrentPatchInfo -ListAvailable -ExcludePreview -ExcludeOutofBand
Otóż to!
Czytaj dalej(Read next) : Witryna PowerShell Module Browser(PowerShell Module Browser site) umożliwia wyszukiwanie poleceń cmdlet i pakietów.
Related posts
Zresetuj klienta Windows Update za pomocą skryptu PowerShell
Przycisk Napraw problemy na stronie Windows Update
Najlepsze praktyki mające na celu skrócenie czasu instalacji usługi Windows Update
Gdzie znaleźć i jak czytać dziennik Windows Update w systemie Windows 11/10
Jak naprawić błąd Windows Update 0x80240061?
Jak naprawić błąd Windows Update 0xc1900201
Napraw błąd aktualizacji systemu Windows 0x80070005
Jak naprawić kod błędu Windows Update 0x80070012?
Windows Update nie został zainstalowany z kodem błędu 0x8024004a
Błąd Windows Update 0x800F081F w systemie Windows 11/10
Windows Update i Shutdown/Restart nie działają i nie znikną
Blokuj wyskakujące okienka nieobsługiwanego sprzętu w Windows Update
Wygraj aktualizację Zatrzymaj: Wyłącz aktualizacje systemu Windows w systemie Windows 10
Jak naprawić błąd Windows Update 0xca020007?
Napraw błąd Windows Update 0x80240439 w systemie Windows 10
Napraw błąd Windows Update 0x80070541 w systemie Windows 10
Windows Update nie jest pobierany lub instalowany, błąd 0x80070543
Jak naprawić kod błędu Windows Update 80244010?
Napraw Nie można zatrzymać usługi Windows Update
Jak wyłączyć automatyczną aktualizację systemu Windows w systemie Windows 11/10?