PowerShell: Übersicht der Windows 10 Versionen im WSUS

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


Sie benötigten persönliche Unterstützung oder haben nicht die richtige Lösung für Ihr Problem gefunden?

Dieser Blog wird von mir, Jan Kappen, in seiner Freizeit betrieben, hier beschreibe ich Lösungen für Probleme aller Art oder technische Anleitungen mit Lösungsansätzen.

Die berufliche Unabhängigkeit

Ich bin seit Januar 2020 vollständig selbstständig und habe meine eigene Firma gegründet, die Building Networks mit Sitz in Winterberg im schönen Sauerland. Hier stehe ich als Dienstleister gerne für Anfragen, Support oder Projekte zur Verfügung.

Die Firma Building Networks bietet Ihnen:

  • Hilfe und Support per Telefon, Fernwartung oder persönlich vor Ort
  • Projekt-Unterstützung
  • Ausgezeichnete Kompetenz zu den Themen
    • Microsoft Hyper-V
    • Microsoft Failover Clustering & HA
    • Storage Spaces Direct (S2D) & Azure Stack HCI
    • Veeam Backup & Recovery
    • Microsoft Exchange
    • Microsoft Exchange Hybrid Infrastruktur
    • Microsoft Active Directory
    • Microsoft Office 365
    • Ubiquiti
    • 3CX VoIP PBX
    • Fortinet Network Security
    • Baramundi Software
    • ...

Ich freue mich über Ihren Kontakt, weitere Informationen finden Sie auf der Webseite meiner Firma unter Building-Networks.de

Jan

Jan Kappen arbeitet seit 2005 in der IT. Er hat seine Ausbildung 2008 abgeschlossen und war bis 2018 als IT-Consultant im Bereich Hyper-V, Failover Clustering und Software Defined Storage unterwegs. Seit 2015 wurde er jährlich von Microsoft als Most Valuable Professional (MVP) im Bereich "Cloud & Datacenter Management" ausgezeichnet für seine Kenntnisse und die Weitergabe seines Wissens. Jan ist häufig auf Konferenzen als Sprecher zu finden, weiterhin bloggt er viel. Von September 2018 bis Dezember 2019 war Jan als Senior Network- und Systemadministrator bei einem großen mittelständischen Unternehmen im schönen Sauerland angestellt. Im Januar 2020 hat er den Sprung in die Selbstständigkeit gewagt und ist seitdem Geschäftsführer der Firma Building Networks in Winterberg. In seiner Freizeit kümmert er sich um das Freifunk-Netzwerk in Winterberg und Umgebung.

Ein Kommentar:

  1. Pingback:PowerShell: HTML-Report der Windows 10 Versionen im WSUS - Jans nicht mehr ganz so kleiner Blog

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert