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?
