fox-octi
Goto Top

Updates funktionieren nicht - Betriebsversion zu alt im Vergleich mit MS-Listen

Wir haben ein Problem mit dem Patchmanagement, dass einige Clients/Server keine Updates mehr ausstehend haben, aber nicht auf den aktuellsten Patchstand sind, nach MS Versionsliste.


Versionslisten:
https://learn.microsoft.com/de-de/windows-server/get-started/windows-ser ...
https://learn.microsoft.com/de-de/windows/release-health/windows11-relea ...


Wir haben leider keinen Ansatz, woran die Probleme liegen und kommen hier weder mit DISM Reperatur noch anders weiter (Manuelle Installation >Fehler, WindowsUpdate Reset kein Erfolg), daher hier der Aufruf an euch, habt ihr Lösungsideen? Es betrifft mehrere Clients.

Wie generieren wir die Listen, hier der Code, diese halten wir dann gegen die Version welcher wir per Winver oder aus der Registry abfragen halten.

if (Test-Path "$($PSScriptRoot)\Microsoft.mshtml.dll") {  
    Write-host "Adding DLL for HTML Parsing Function"  
    Add-Type -Path "$($PSScriptRoot)\Microsoft.mshtml.dll"  
}

$ErrorActionPreference = "SilentlyContinue"  


if (!(Get-Command Read-HtmlTable -ErrorAction SilentlyContinue)) {
    Install-Script -Name Read-HtmlTable 
}

$WebSite=Invoke-WebRequest https://learn.microsoft.com/en-us/officeupdates/update-history-office-2021
$table=Read-HtmlTable $WebSite

foreach ($t in $table) {

$versplit=$t.'Version number'.Split(" ")  
$buildinfo=$versplit[-1].Replace(")","")  
$t | Add-Member -MemberType NoteProperty -Name Version -Value $versplit[1] -Force
$t | Add-Member -MemberType NoteProperty -Name BuildVersion -Value ([version] "16.0.$($buildinfo)") -Force  
$t | Add-Member -MemberType NoteProperty -Name Produkt -Value "Office 21" -Force  
$t | Add-Member -MemberType NoteProperty -Name ReleaseDate -Value (get-date $t.'Release date' ) -Force  

}

$VersionTableList=$table |?{$_.Produkt -and $_.ReleaseDate -and $_.BuildVersion -and $_.Version }|select Produkt,ReleaseDate,BuildVersion,Version 



$WebSite=Invoke-WebRequest https://learn.microsoft.com/en-us/officeupdates/update-history-office-2019
$table=Read-HtmlTable $WebSite

foreach ($t in $table) {

$versplit=$t.'Version number'.Split(" ")  
$buildinfo=$versplit[-1].Replace(")","")  

$t | Add-Member -MemberType NoteProperty -Name Version -Value $versplit[1] -Force
$t | Add-Member -MemberType NoteProperty -Name BuildVersion -Value ([version] "16.0.$($buildinfo)") -Force  
if ($versplit[1] -like "1808") {  
    $t | Add-Member -MemberType NoteProperty -Name Produkt -Value "Office 2019" -Force  
}
else{$t | Add-Member -MemberType NoteProperty -Name Produkt -Value "Office 2016" -Force}  

$t | Add-Member -MemberType NoteProperty -Name ReleaseDate -Value (get-date $t.'Release date' ) -Force  

}

$VersionTableList+=$table |?{$_.Produkt -and $_.ReleaseDate -and $_.BuildVersion -and $_.Version }|select Produkt,ReleaseDate,BuildVersion,Version 


$WebSite=Invoke-WebRequest https://learn.microsoft.com/en-us/officeupdates/update-history-microsoft365-apps-by-date
$table=Read-HtmlTable $WebSite

foreach ($t in $table|?{$_.'Monthly Enterprise Channel' -and $_.'Year'}) {  
    $multiversions=@()
    ##Monthly Enterprise Channel
    if ((($t.'Monthly Enterprise Channel' -Split("\n"))|Measure-Object).count -gt 1) {  
        foreach($multiversion in ($t.'Monthly Enterprise Channel' -Split("\n"))){  
            $versplit=$multiversion.Split(" ")  
            $buildinfo=$versplit[-1].Replace(")","")  
            $multiversions+=([version] "16.0.$($buildinfo)")  
        }
    }
    else{
         $versplit=$t.'Monthly Enterprise Channel'.Split(" ")  
         $buildinfo=$versplit[-1].Replace(")","")  
         $multiversions+=([version] "16.0.$($buildinfo)")  
    }
    
    ##Current Channel
    if ((($t.'Current Channel' -Split("\n"))|Measure-Object).count -gt 1) {  
        foreach($multiversion in ($t.'Current Channel' -Split("\n"))){  
            $versplit=$multiversion.Split(" ")  
            $buildinfo=$versplit[-1].Replace(")","")  
            $multiversions+=([version] "16.0.$($buildinfo)")  
        }
    }
    else{
         $versplit=$t.'Current Channel'.Split(" ")  
         $buildinfo=$versplit[-1].Replace(")","")  
         $multiversions+=([version] "16.0.$($buildinfo)")  
    }
    
    
    ##Semi-Annual Enterprise Channel
    if ((($t.'Semi-Annual Enterprise Channel' -Split("\n"))|Measure-Object).count -gt 1) {  
        foreach($multiversion in ($t.'Semi-Annual Enterprise Channel' -Split("\n"))){  
            $versplit=$multiversion.Split(" ")  
            $buildinfo=$versplit[-1].Replace(")","")  
            $multiversions+=([version] "16.0.$($buildinfo)")  
        }
    }
    else{
         $versplit=$t.'Semi-Annual Enterprise Channel'.Split(" ")  
         $buildinfo=$versplit[-1].Replace(")","")  
         $multiversions+=([version] "16.0.$($buildinfo)")  
    }
    
    
    $t | Add-Member -MemberType NoteProperty -Name Version -Value $versplit[1] -Force  -ErrorAction SilentlyContinue
    $t | Add-Member -MemberType NoteProperty -Name BuildVersion -Value $multiversions -Force  -ErrorAction SilentlyContinue
    $t | Add-Member -MemberType NoteProperty -Name Produkt -Value "Office 365" -Force  -ErrorAction SilentlyContinue  
    $t | Add-Member -MemberType NoteProperty -Name ReleaseDate -Value (get-date "$($t.'Release Date'), $($t.'year')") -Force -ErrorAction SilentlyContinue  

}

$VersionTableList+=$table |?{$_.Produkt -and $_.ReleaseDate -and $_.BuildVersion -and $_.Version }|select Produkt,ReleaseDate,BuildVersion,Version 



$WebSite=Invoke-WebRequest https://learn.microsoft.com/en-us/windows/release-health/windows11-release-information
$table=Read-HtmlTable $WebSite



foreach ($t in $table|?{$_.'KB article' }) {  

$t | Add-Member -MemberType NoteProperty -Name Produkt -Value "Windows 11" -Force  -ErrorAction SilentlyContinue  
$t | Add-Member -MemberType NoteProperty -Name ReleaseDate -Value (get-date "$($t.'Availability date')") -Force -ErrorAction SilentlyContinue  
$t | Add-Member -MemberType NoteProperty -Name BuildVersion -Value $t.Build -Force -ErrorAction SilentlyContinue



}


$VersionTableList+=$table|?{$_.'KB article'} |?{$_.Produkt -and $_.ReleaseDate -and $_.BuildVersion }|select Produkt,ReleaseDate,BuildVersion,Version   



$WebSite=Invoke-WebRequest https://learn.microsoft.com/en-us/windows/release-health/release-information
$table=Read-HtmlTable $WebSite



foreach ($t in $table|?{$_.'KB article' }) {  

$t | Add-Member -MemberType NoteProperty -Name Produkt -Value "Windows 10" -Force  -ErrorAction SilentlyContinue  
$t | Add-Member -MemberType NoteProperty -Name ReleaseDate -Value (get-date "$($t.'Availability date')") -Force -ErrorAction SilentlyContinue  
$t | Add-Member -MemberType NoteProperty -Name BuildVersion -Value $t.Build -Force -ErrorAction SilentlyContinue



}


$VersionTableList+=$table|?{$_.'KB article'} |?{$_.Produkt -and $_.ReleaseDate -and $_.BuildVersion }|select Produkt,ReleaseDate,BuildVersion,Version   

$WebSite=Invoke-WebRequest https://learn.microsoft.com/en-us/windows-server/get-started/windows-server-release-info
$table=Read-HtmlTable $WebSite



foreach ($t in $table|?{$_.'KB article' }) {  
switch -Wildcard ($t.'OS build') {  
"20348.*" {  
   $t | Add-Member -MemberType NoteProperty -Name Produkt -Value "Windows Server 2022" -Force  -ErrorAction SilentlyContinue  
}
"17763.*" {  
    $t | Add-Member -MemberType NoteProperty -Name Produkt -Value "Windows Server 2019" -Force  -ErrorAction SilentlyContinue  
}
"14393.*" {  
    $t | Add-Member -MemberType NoteProperty -Name Produkt -Value "Windows Server 2016" -Force  -ErrorAction SilentlyContinue  
}
}


$t | Add-Member -MemberType NoteProperty -Name ReleaseDate -Value (get-date "$($t.'Availability date')") -Force -ErrorAction SilentlyContinue  
$t | Add-Member -MemberType NoteProperty -Name BuildVersion -Value $t.'OS build' -Force -ErrorAction SilentlyContinue  

}


$VersionTableList+=$table|?{$_.'KB article'} |?{$_.Produkt -and $_.ReleaseDate -and $_.BuildVersion }|select Produkt,ReleaseDate,BuildVersion,Version   

$VersionTableList| Sort-Object ReleaseDate,BuildVersion -Descending | ConvertTo-Json | Out-File -Force MicrosoftVersionList.json
$VersionTableList |?{$_.ReleaseDate -gt (get-date).AddDays(-90)}| Sort-Object ReleaseDate,BuildVersion -Descending | ConvertTo-Json | Out-File -Force MicrosoftVersionList90d.json

Content-ID: 73077926475

Url: https://administrator.de/contentid/73077926475

Ausgedruckt am: 04.12.2024 um 08:12 Uhr

Franz-Josef-II
Franz-Josef-II 26.06.2024 um 15:38:03 Uhr
Goto Top
Hello

Wenn es sich um eine überschaubare Anzahl handelt -> Inplaceupgrade auf's letzte System.
StefanKittel
StefanKittel 26.06.2024 um 21:08:45 Uhr
Goto Top
Hallo,
von welcher Version als Beispiel sprechen wir hier?
Schon mal mit ABC-Update probiert?
Stefan
Franz-Josef-II
Franz-Josef-II 27.06.2024 um 07:00:36 Uhr
Goto Top
Guten Morgen

Wenn z.B. ein SCCM o.ä. im Einsatz sollte ein Inplaceupgrade über diesen funktionieren.


Sollte, weil ich es selbst noch nie praktisch gemacht habe. Ich würde aber zuerst bei einem Testen, ob das Inplaceupgrade das Problem löst. Hatte einmal dasselbe Problem ..... auf zwei Rechnern und dort hat's funktioniert. Waren aber nur zwei.
FOX-OCTI
FOX-OCTI 27.06.2024 um 18:20:24 Uhr
Goto Top
Hi,

wir sprechen von
  • Windows 11 23H2 Os Version gefunden: 22631.3296 - MS ReleaseDate: 12-03-2024
  • Windows 11 22H2
  • Windows 10 zum Bsp.: 19045.4046 - MS ReleaseDate: 13-02-2024
+Windows Server 2016. 2019

Inplace Upgrade wird hier zum teil sehr schwierig.