Attention -> Update!
Ich habe das hier genutzte Skript erweitert um die Erstellung von einem HTML-Report: PowerShell: HTML-Report der Windows 10 Versionen im WSUS
Ursprünglicher Beitrag:
Ich bin gerade bei uns in der Infrastruktur dabei, alle Clients mit Windows 10 aufzunehmen und den aktuellen Build zu erfassen. Ziel des Ganzen ist es natürlich, alle Systeme nach und nach auf die aktuelle Build (was zum Zeitpunkt der Erstellung von diesem Artikel 1809 ist) zu heben. Man kann sich im WSUS natürlich eine Liste der Clients anschauen und über die Tabellen-Überschriften auch die Build herausfinden, allerdings war mir das nicht ausreichend und man kann die Liste nur über Umwege exportieren und vergleichen/nutzen/….
Die Variante per PowerShell
Da der WSUS Dienst seit einiger Zeit auch per PowerShell angesprochen werden kann, habe ich mir hier ein kleines Skript geschrieben, welches mir bei der Auflistung der Clients und der jeweiligen Versionen hilft.
<#
.SYNOPSIS
Auflistung aller Windows 10 Systeme im WSUS
.DESCRIPTION
PowerShell Script zur Auflistung aller Windows 10 PCs
und Sortierung nach Release/Build
.EXAMPLE
C:\Scripts\Windows10_Version_from_WSUS.ps1
.NOTES
Date: 28.11.2018
Author: Jan Kappen
Website: https://www.zueschen.eu
Twitter: @JanKappen
#>
# Variablen und Einstellungen
$WSUSServer = "WSUS"
$Port = "8531"
$Groupname = "Name der WSUS-Gruppe"
$date = Get-Date -UFormat "%Y%m%d"
$Logfile = "C:\temp\$date-wsus_log.log"
$SSL = $true
# Abfrage der WSUS-Clients
if ($SSL -eq $true) {
$Clients = Get-WsusServer -Name $WSUSServer -Port $Port -UseSsl | get-wsuscomputer -ComputerTargetGroups $Groupname
} else {
$Clients = Get-WsusServer -Name $WSUSServer -Port $Port | get-wsuscomputer -ComputerTargetGroups $Groupname
}
# Header
Set-Content $Logfile "Liste der Windows 10 Clients inkl. Sortierung nach Release-Stand`n"
Add-Content $Logfile "################################################################`n"
Add-Content $Logfile "`n"
# Windows 10 1809
Add-Content $Logfile "Windows 10 Build 1809 (October 2018 Update)"
Add-Content $Logfile "############################################`n"
foreach ($Client in $Clients) {
if ($Client.ClientVersion -match "10.0.17763") {
$i = $Client.FullDomainName
Add-Content $Logfile $i`n
}}
# Windows 10 1803
Add-Content $Logfile " "
Add-Content $Logfile "Windows 10 Build 1803 (April 2018 Update)"
Add-Content $Logfile "############################################`n"
foreach ($Client in $Clients) {
if ($Client.ClientVersion -match "10.0.17134") {
$i = $Client.FullDomainName
Add-Content $Logfile $i`n
}}
# Windows 10 1709
Add-Content $Logfile " "
Add-Content $Logfile "Windows 10 Build 1709 (Fall Creators Update)"
Add-Content $Logfile "############################################`n"
foreach ($Client in $Clients) {
if ($Client.ClientVersion -match "10.0.16299") {
$i = $Client.FullDomainName
Add-Content $Logfile $i`n
}}
# Windows 10 1703
Add-Content $Logfile " "
Add-Content $Logfile "Windows 10 Build 1703 (Creators Update)"
Add-Content $Logfile "############################################`n"
foreach ($Client in $Clients) {
if ($Client.ClientVersion -match "10.0.15063") {
$i = $Client.FullDomainName
Add-Content $Logfile $i`n
}}
# Windows 10 1607
Add-Content $Logfile " "
Add-Content $Logfile "Windows 10 Build 1607 (Anniversary Update)"
Add-Content $Logfile "############################################`n"
foreach ($Client in $Clients) {
if ($Client.ClientVersion -match "10.0.14393") {
$i = $Client.FullDomainName
Add-Content $Logfile $i`n
}}
# Windows 10 1511
Add-Content $Logfile " "
Add-Content $Logfile "Windows 10 Build 1511 (November Update)"
Add-Content $Logfile "############################################`n"
foreach ($Client in $Clients) {
if ($Client.ClientVersion -match "10.0.10586") {
$i = $Client.FullDomainName
Add-Content $Logfile $i`n
}}
# Windows 10 1507
Add-Content $Logfile " "
Add-Content $Logfile "Windows 10 Build 1507 (Initial Release)"
Add-Content $Logfile "############################################`n"
foreach ($Client in $Clients) {
if ($Client.ClientVersion -match "10.0.10240") {
$i = $Client.FullDomainName
Add-Content $Logfile $i`n
}}
Hier noch das komplette Skript als txt-Datei:
Das Ergebnis nach einem Durchlauf sieht in meinem Fall wie folgt aus:
Das Skript selbst sollte selbsterklärend sein. Falls nicht, einfach einen kurzen Kommentar da lassen 🙂
Zusätzliche Infos
Eine sehr gute Übersicht über die Windows 10-Versionen findet sich übrigens auf Wikipedia:
https://en.wikipedia.org/wiki/Windows_10_version_history
Pingback:PowerShell: HTML-Report der Windows 10 Versionen im WSUS - Jans nicht mehr ganz so kleiner Blog