<# .SYNOPSIS Auflistung aller Windows 10 Systeme im WSUS als HTML Report .DESCRIPTION PowerShell Script zur Auflistung aller Windows 10 PCs und Sortierung nach Release/Build inkl. HTML Report .EXAMPLE C:\Scripts\Windows10_Client_Version_Report.ps1 .NOTES Date: 12.12.2018 Author: Jan Kappen Website: https://www.zueschen.eu Twitter: @JanKappen #> # Variablen und Einstellungen $WSUSServer = "WSUSServer" $Port = "8531" $Groupname = "Clients" $date = Get-Date -UFormat "%Y%m%d" $Logfile = "C:\temp\$date-wsus_log.log" $HTMLFile = "C:\temp\$date-wsus_log.htm" $SSL = $true # Prüfung auf benötigtes Modul if (-not (Get-Module -ListAvailable -Name ReportHTML)) { Write-Host -ForegroundColor Red 'Benötigtes Modul "ReportHTML" nicht vorhanden, Abbruch!'`n Write-Host -ForegroundColor Green 'Installation muss mir "Install-Module -Name ReportHTML" durchgeführt werden' Write-Host -ForegroundColor Green 'Weitere Infos unter "https://www.powershellgallery.com/packages/ReportHTML/"' # Hilfe und Anleitung: https://azurefieldnotesblog.blob.core.windows.net/wp-content/2017/06/Help-ReportHTML2.html exit } #region # Abfrage der WSUS-Clients if ($SSL -eq $true) { $Clients = Get-WsusServer -Name $WSUSServer -Port $Port -UseSsl | get-wsuscomputer -ComputerTargetGroups $Groupname | select FullDomainName, ClientVersion, OSDescription, RequestedTargetGroupName } else { $Clients = Get-WsusServer -Name $WSUSServer -Port $Port | get-wsuscomputer -ComputerTargetGroups $Groupname | select FullDomainName, ClientVersion, OSDescription, RequestedTargetGroupName } $Clients1809 = @() foreach ($Client in $Clients) { if ($Client.ClientVersion -match "10.0.17763") { $Clients1809 += $Client }} $Clients1803 = @() foreach ($Client in $Clients) { if ($Client.ClientVersion -match "10.0.17134") { $Clients1803 += $Client }} $Clients1709 = @() foreach ($Client in $Clients) { if ($Client.ClientVersion -match "10.0.16299") { $Clients1709 += $Client }} $Clients1703 = @() foreach ($Client in $Clients) { if ($Client.ClientVersion -match "10.0.15063") { $Clients1703 += $Client }} $Clients1607 = @() foreach ($Client in $Clients) { if ($Client.ClientVersion -match "10.0.14393") { $Clients1607 += $Client }} $Clients1511 = @() foreach ($Client in $Clients) { if ($Client.ClientVersion -match "10.0.10586") { $Clients1511 += $Client }} $Clients1507 = @() foreach ($Client in $Clients) { if ($Client.ClientVersion -match "10.0.10240") { $Clients1507 += $Client }} # Bau den Report, Bob! $rpt = @() $rpt += Get-HTMLOpenPage -TitleText "WSUS Status Übersicht - Windows 10 Verteilung" -HideLogos ### 1809 $rpt += Get-HtmlContentOpen -HeaderText "Windows 10 Build 1809 (October 2018 Update)" $rpt+= Get-HtmlContentTable $Clients1809 $rpt += Get-HTMLContentClose ### 1803 $rpt += Get-HtmlContentOpen -HeaderText "Windows 10 Build 1803 (April 2018 Update)" $rpt+= Get-HtmlContentTable $Clients1803 $rpt += Get-HTMLContentClose ### 1709 $rpt += Get-HtmlContentOpen -HeaderText "Windows 10 Build 1709 (Fall Creators Update)" $rpt+= Get-HtmlContentTable $Clients1709 $rpt += Get-HTMLContentClose ### 1703 $rpt += Get-HtmlContentOpen -HeaderText "Windows 10 Build 1703 (Creators Update)" $rpt+= Get-HtmlContentTable $Clients1703 $rpt += Get-HTMLContentClose ### 1607 $rpt += Get-HtmlContentOpen -HeaderText "Windows 10 Build 1607 (Anniversary Update)" $rpt+= Get-HtmlContentTable $Clients1607 $rpt += Get-HTMLContentClose ### 1511 $rpt += Get-HtmlContentOpen -HeaderText "Windows 10 Build 1511 (November Update)" $rpt+= Get-HtmlContentTable $Clients1511 $rpt += Get-HTMLContentClose ### 1507 $rpt += Get-HtmlContentOpen -HeaderText "Windows 10 Build 1507 (Initial Release)" $rpt+= Get-HtmlContentTable $Clients1507 $rpt += Get-HTMLContentClose # $rpt += Get-HTMLClosePage $rpt | set-content -path "c:\temp\status.html" # Ablegen der Output-Datei im IIS-Verzeichnis Set-Content -Value $rpt -path "C:\inetpub\wwwroot\status.html"