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.
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 73077926475
Url: https://administrator.de/contentid/73077926475
Ausgedruckt am: 04.12.2024 um 08:12 Uhr
4 Kommentare
Neuester Kommentar
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.
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.