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.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
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/forum/updates-funktionieren-nicht-betriebsversion-zu-alt-im-vergleich-mit-ms-listen-73077926475.html
Ausgedruckt am: 29.04.2025 um 21:04 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.