PowerShell-script til at kontrollere Windows Update-status
Normalt bruger brugere, der ønsker at finde ud af, om den seneste kumulative opdatering er installeret på deres Windows 10-system, denne metode til at tjekke Windows 10-opdateringshistorikken . I dette indlæg viser vi dig, hvordan du får aktuelle patchoplysninger til Windows 10 ved hjælp af et PowerShell-script.(how to get current patch information for Windows 10 using a PowerShell script.)
PowerShell -script til at kontrollere Windows Update - status
PowerShell - scriptet kan bruges til at rapportere, hvilken OS-bygning en Windows 10 -computer er på i øjeblikket, samt hvilken opdatering der er den seneste opdatering, der er tilgængelig for enheden. Den kan også rapportere om alle Windows -opdateringer, der er udgivet til den version af Windows 10 , som en arbejdsstation er på i øjeblikket.
Når du kører scriptet, vil følgende oplysninger blive vist:
- Aktuel OS-version
- Nuværende OS-udgave
- Aktuelt OS Build-nummer
- Den installerede opdatering, der svarer til det pågældende build-nummer, samt KB-nummeret og et link til info-siden
- Den seneste tilgængelige opdatering til OS-versionen
For at få Windows 10 aktuelle patchoplysninger ved hjælp af PowerShell -script, skal du oprette og køre PowerShell-scriptet(create and run the PowerShell script) ved hjælp af koden nedenfor fra 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 udelukke tilgængelige forhåndsvisninger(Preview) eller opdateringer uden for båndet(Out-of-band) , der er nyere end den, du har installeret, fra at blive rapporteret som den seneste tilgængelige opdatering, så du bare kan fokusere på de kumulative opdateringer ved at køre kommandoen nedenfor:
Get-CurrentPatchInfo -ExcludePreview -ExcludeOutofBand
Du kan også liste alle Windows -opdateringer, som Microsoft har udgivet til din OS-version med følgende kommando:
Get-CurrentPatchInfo -ListAvailable
Hvis du vil udelukke Preview og Out-of-band- opdateringer fra listen, men liste alle Windows - opdateringer, som Microsoft har udgivet til din OS-version, skal du køre kommandoen nedenfor:
Get-CurrentPatchInfo -ListAvailable -ExcludePreview -ExcludeOutofBand
Det er det!
Læs næste(Read next) : PowerShell Module Browser-webstedet(PowerShell Module Browser site) lader dig søge efter cmdlets og pakker.
Related posts
Nulstil Windows Update Client ved hjælp af PowerShell Script
Knappen Løs problemer på Windows Update-siden
Bedste fremgangsmåder til at forbedre installationstiderne for Windows Update
Hvor finder du og hvordan du læser Windows Update-log i Windows 11/10
Sådan rettes Windows Update-fejl 0x80240061
Windows Update-klienten kunne ikke registrere med fejlen 0x8024001f
Ret Windows Update-fejl 0x80070005
Windows Update downloades eller installeres ikke, fejl 0x80070543
Ret Windows Update-fejl 0x80070422 på Windows 10
Fejl 0xc19001e1, Windows Update kunne ikke installeres
Bloker ikke-understøttet hardware-popup i Windows Update
Windows Update kunne ikke installeres med fejlkode 0x8024004a
Sådan rettes Windows Update-fejlkode 0x80070012
Ret fejl 0x80072efe på Windows 10 Update Assistant
Windows Update sidder fast med at downloade opdateringer i Windows 11/10
Sådan rettes Windows Update-fejl 0xc1900201
Sådan rettes Windows Update-fejlkode 80244010
Kunne ikke installere Windows Update med fejlkode 0x8024200D
Sådan sætter du Windows Update på pause i Windows 11/10 i op til 365 dage
Windows Update og sikkerhedsindstillinger i Windows 10