PowerShell-skript för att kontrollera Windows Update-status
Vanligtvis använder användare som vill ta reda på om den senaste kumulativa uppdateringen är installerad på deras Windows 10-system den här metoden för att kontrollera Windows 10 Update History . I det här inlägget kommer vi att visa dig hur du får aktuell patchinformation för Windows 10 med hjälp av ett PowerShell-skript.(how to get current patch information for Windows 10 using a PowerShell script.)
PowerShell- skript för att kontrollera Windows Update- status
PowerShell -(PowerShell) skriptet kan användas för att rapportera vilket OS-bygge en Windows 10 -dator för närvarande är på samt vilken uppdatering som är den senaste uppdateringen som är tillgänglig för enheten. Den kan också rapportera om alla Windows -uppdateringar som publiceras för den version av Windows 10 som en arbetsstation för närvarande är på.
När du kör skriptet kommer följande information att visas:
- Aktuell OS-version
- Aktuell OS-utgåva
- Aktuellt OS Build-nummer
- Den installerade uppdateringen som motsvarar det buildnumret, samt KB-numret och en länk till infosidan
- Den senaste tillgängliga uppdateringen för OS-versionen
För att få aktuell patchinformation för Windows 10 med (Windows 10)PowerShell- skriptet måste du skapa och köra PowerShell-skriptet(create and run the PowerShell script) med koden nedan från 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
Du kan utesluta tillgängliga förhandsgransknings-(Preview) eller out-of-band- uppdateringar som är nyare än den du har installerat från att rapporteras som den senaste tillgängliga uppdateringen, så du kan bara fokusera på de kumulativa uppdateringarna genom att köra kommandot nedan:
Get-CurrentPatchInfo -ExcludePreview -ExcludeOutofBand
Du kan också lista alla Windows -uppdateringar som Microsoft har publicerat för din OS-version med följande kommando:
Get-CurrentPatchInfo -ListAvailable
Om du vill utesluta Preview och Out-of-band- uppdateringar från listan men lista alla Windows - uppdateringar som Microsoft har publicerat för din OS-version, kör kommandot nedan:
Get-CurrentPatchInfo -ListAvailable -ExcludePreview -ExcludeOutofBand
Det är allt!
Läs nästa(Read next) : Webbläsarwebbplatsen för PowerShell Module(PowerShell Module Browser site) låter dig söka efter cmdlets och paket.
Related posts
Återställ Windows Update Client med PowerShell Script
Knappen Fix issues på sidan Windows Update
Bästa metoder för att förbättra installationstiden för Windows Update
Var du hittar och hur du läser Windows Update-logg i Windows 11/10
Så här fixar du Windows Update-fel 0x80240061
Hur man uppdaterar andra Microsoft-produkter med Windows Update
Åtgärda Windows Update-fel 0x80070422 på Windows 10
Blockera popup-fönster för hårdvara som inte stöds i Windows Update
Windows Update laddas inte ned eller installeras, fel 0x80070543
Windows Update och avstängning/omstart fungerar inte och försvinner inte
Windows Update kunde inte installeras eller laddas inte ned i Windows 11/10
Fixa 0x80071a2d Windows Update-fel
Så här åtgärdar du Windows Update-fel 0xc1900201
Åtgärda Windows Update-tjänsten kunde inte stoppas
Åtgärda Windows Update-fel 0x80070659
Det gick inte att installera Windows Update med felkoden 0x8024200D
Fixa Windows Update-fel C8000266?
Fixa Windows 10 Update Error 0x800703F1
Hur man stänger av automatisk Windows Update i Windows 11/10
Hur man döljer Windows-uppdateringar med PowerShell i Windows 11/10