WSUS Auswertung welche Computer Updates benötigen Thema ist als GELÖST markiert

kleine praktische Skripte die den Arbeitsalltag erleichtern.
Benutzeravatar
Ulrich Wiedholz
Beiträge: 282
Registriert: Samstag 10. Dezember 2011, 17:19
Kontaktdaten:

WSUS Auswertung welche Computer Updates benötigen

Ungelesener Beitrag von Ulrich Wiedholz »

Um die Arbeit mit dem WSUS zu erleichtern wird oft und gern die Powershell verwendet...
In diesem Fall möchten wir eine Liste der Updates, die auf den einzelnen Computern verfügbar sind anzeigen, sowie welche Version derzeit auf den Systemen läuft um uns einen schnellen Überblick über die Updatelage zu verschaffen.

In diesem Skript gibt es noch die Besonderheit, dass ich gerne zu den leider wenig aussagekräftigen Rechnernamen die Benutzernamen anzeigen möchte.
Diese sind wiederum im AD bei den Computern im Feld Beschreibung hinterlegt.

Außerdem lassen wir uns anzeigen, wann die Rechner das letzte mal ihren Status übertragen haben und auf welchem Build und Revision sie derzeit laufen.

Code: Alles auswählen

[reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration") | Out-Null
$Global:WSUS = [Microsoft.UpdateServices.Administration.AdminProxy]::getUpdateServer('WSUSServer',$false,'8530')
$WsusClients = $Members | %{$Global:Wsus.GetComputerTargets()}
    #Updatescope definieren (Welche Updates geprüft werden sollen pro Client)    
    $UpdateScope = New-Object Microsoft.UpdateServices.Administration.UpdateScope
    #Nicht freigegebene sowie bereits installierte oder unbekannte Updates werden ausgenommen. - Somit werden die zu installierenden Updates erfasst.
    $UpdateScope.ExcludedInstallationStates = [Microsoft.UpdateServices.Administration.UpdateInstallationStates]::Installed, [Microsoft.UpdateServices.Administration.UpdateInstallationStates]::NotApplicable, [Microsoft.UpdateServices.Administration.UpdateInstallationStates]::Unknown
    $Global:WsusInformationArr = New-Object system.Collections.ArrayList
    #Die Schleife prüft die verfügbaren Updates für jeden Client, diese werden Addiert und als Summe ausgegeben
    Foreach ($WsusClient in $WsusClients) {
        $WsusObj = New-Object PsObject
        $WsusObj | Add-Member -MemberType NoteProperty "Computer" -Value $WsusClient.FullDomainName.Substring(0,$WsusClient.FullDomainName.IndexOf("."))
        $WsusObj | Add-Member -MemberType NoteProperty "Beschreibung" -Value (Get-ADComputer $WsusClient.FullDomainName.Substring(0,$WsusClient.FullDomainName.IndexOf(".")) -Properties Description | select Description).Description
        $WsusObj | Add-Member -MemberType NoteProperty "System" -Value $WsusClient.OSDescription
        $WsusObj | Add-Member -MemberType NoteProperty "Build" -Value $WsusClient.ClientVersion.Build
        $WsusObj | Add-Member -MemberType NoteProperty "Revision" -Value $WsusClient.ClientVersion.Revision
        $WsusObj | Add-Member -MemberType NoteProperty "Status vom" -Value $WsusClient.LastReportedStatusTime
        $WsusObj | Add-Member -MemberType NoteProperty "Updates" -Value ($WsusClient.GetUpdateInstallationInfoPerUpdate($UpdateScope) | ? {$_.UpdateApprovalAction -ne "NotApproved"}).count
        If($WsusObj.Updates -eq $null){$WsusObj.Updates = "0"}
        $Global:WsusInformationArr.add($WsusObj) | out-null
    }
$Global:WsusInformationArr | ogv # <- Ausgabe im Grid
#$Global:WsusInformationArr | Format-Table | Out-Printer # <- Ausgabe auf Standarddrucker
#$Global:WsusInformationArr | Export-Csv WsusUpdateliste.csv # <- Ausgabe als CSV-Datei - Kann mit Excel geöffnet und bearbeitet werden
Erklärung:
Zunächst greifen wir auf unseren WSUSServer per Standardport 8530 zu (Name muss entsprechend an Eure Umgebung angepasst werden).
Dann erstellen wir uns eine Liste der Rechner die uns interessieren (im Beispiel alle Verfügbaren mit "GetComputerTargets()").
Nun erzeugen wir ein Scope mit allen für uns interessanten Updates (im Beispiel die noch nicht installierten aber schon freigegebenen Updates).

In der Schleife sammeln wir nun die Informationen, die wir anschließend aus dem Array in welches sie geschrieben werden, auswerten möchten.
Im Beispiel ist das der Computername, der Username (der wie oben erklärt in der Computerbeschreibung des AD zu finden ist), das System sowie die Build und Revisionsnummer (in eigenen Feldern, damit im Datagrid sortiert werden kann), der Zeit-Stempel des letzten Reports und die Anzahl der verfügbaren Updates.

Am Ende noch die Möglichkeit die Anzeige auf dem Monitor (im Zum Wörterbuch hinzufügen), auf dem Drucker oder als CSV-Datei zu realisieren. Einfach die nicht gewünschten Optionen aus-kommentieren.
In diesem Sinne...

Ulrich Wiedholz
UW-Operator.de
Shawnamazy
Beiträge: 9
Registriert: Samstag 11. November 2017, 02:33
Kontaktdaten:

Wow, great forum topic.Really looking forward to read more. Whitey

Ungelesener Beitrag von Shawnamazy »

Wow, great forum topic.Really looking forward to read more. Inestroza
Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste