Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

PowerShell Anzeige von WSUS-Updates nach Gruppen mit IDs

Mitglied: Marabunta

Marabunta (Level 1) - Jetzt verbinden

14.03.2019 um 11:19 Uhr, 194 Aufrufe, 4 Kommentare

Hallo,

ich würde gerne die WSUS-Updates mit einem Skript auslesen und dabei anzeigen lassen, welche Updates für welche Gruppe (es gibt Untergruppen: Alle Clients -> W10, W7, Server...) in welchem Status (Approved...) sind .

Der Grundgedanke war, dass im Grunde die Gruppen als Spaltenbeschriftung oben stehen und darunter der UpdateName, UpdateId und Status ggf. mit Datum stehen.
Idealerweise Maschinenlesbar um per Skript weitermachen zu können. Wie z.B. Approve UpdateId 123 für Gruppe W10.

Ich denke ein PSCustomObject wäre das richtige, damit komme ich aber nicht klar und bitte um Hilfe.


Ich habe dazu bisher folgende Basis gefunden, dass zu viel und nicht ganz genau genug ist:

01.
[reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration") | Out-Null
02.
#$updatescope.ApprovedStates = [Microsoft.UpdateServices.Administration.ApprovedStates]::NotApproved
03.
#$updatescope.IncludedInstallationStates = [Microsoft.UpdateServices.Administration.UpdateInstallationStates]::NotInstalled
04.
#$updatescope.FromArrivalDate = [datetime]"12/13/2017"
05.

06.
$WSUSSERVER="SERVER1234"
07.
$wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::getUpdateServer("$WSUSSERVER",$false,8530)
08.

09.
# ApprovedUpdatestoXML
10.
# \Update Services 3.0 API Samples and Tools\ApprovedUpdatesToXML
11.
 
12.
$updateScope = New-Object Microsoft.UpdateServices.Administration.UpdateScope
13.
$updateScope.ApprovedStates = (
14.
([Microsoft.UpdateServices.Administration.ApprovedStates]::HasStaleUpdateApprovals.value__+
15.
[Microsoft.UpdateServices.Administration.ApprovedStates]::LatestRevisionApproved.value__)
16.
)
17.
 
18.
# get the list of updates that are approved, or have an older revision that is approved
19.
$Updates = (Get-WsusServer).GetUpdates($updateScope) 
20.
# calling IUpdate.GetUpdateApprovals once for each update can be expensive, so instead
21.
# we use call IUpdateServer.GetUpdateApprovals() to get all approvals for all updates at once
22.
$allUpdateApprovals = (Get-WsusServer).GetUpdateApprovals($updateScope)
23.
# similarly, construct a table of target group
24.
$allTargetGroups = (Get-WsusServer).GetComputerTargetGroups()
25.
$Updates | ForEach-Object {
26.
    $update = $_
27.
    [PSCustomObject]@{
28.
        Id = $update.Id.UpdateId.ToString() ;
29.
        Title = $update.Title ;
30.
        Classification = $update.UpdateClassificationTitle ;
31.
        Approvals = $( 
32.
        if ($update.IsApproved) {
33.
            # This revision (the latest revision) is approved; get the approvals and write them
34.
            $allUpdateApprovals | Where { 
35.
                $_.UpdateID.UpdateID -eq $update.Id.UpdateId
36.
            } | 
37.
            ForEach-Object {
38.
                $approval = $_
39.
                [PSCustomObject]@{
40.
                    RevisionNumber = $update.Id.RevisionNumber ;
41.
                    TargetGroup = ($allTargetGroups | Where { $_.ID -eq $approval.ComputerTargetGroupId }).Name ;
42.
                    Approval = $approval.Action ;
43.
                    Deadline = $( 
44.
                        if ($_.Deadline -lt ([datetime]::maxvalue)) {
45.
                            $_.Deadline    
46.
                        } else {
47.
                            "None"
48.
                        }
49.
                    ) ;
50.
                    ApprovalDate = $approval.CreationDate ;
51.
                }
52.
            }
53.
        } elseif ($update.HasStaleUpdateApprovals) {
54.
            # This revision has older revisions that are approved; get their approvals and write them
55.
            $update.GetRelatedUpdates(
56.
                [Microsoft.UpdateServices.Administration.UpdateRelationship]::AllRevisionsOfThisUpdate
57.
                ) | Where isApproved | 
58.
                ForEach-Object {
59.
                $revision = $_
60.
                $revision.GetUpdateApprovals() |
61.
                ForEach-Object {
62.
                    $approval = $_
63.
                    [PSCustomObject]@{
64.
                        RevisionNumber = $update.Id.RevisionNumber ;
65.
                        TargetGroup = ($allTargetGroups | Where { $_.ID -eq $approval.ComputerTargetGroupId }).Name ;
66.
                        Approval = $approval.Action ;
67.
                        Deadline = $( 
68.
                            if ($_.Deadline -lt ([datetime]::maxvalue)) {
69.
                                $_.Deadline    
70.
                            } else {
71.
                                "None"
72.
                            }
73.
                        ) ;
74.
                        ApprovalDate = $approval.CreationDate ;
75.
                    }
76.
                }
77.
                }
78.
        } else {
79.
        }
80.
    ) ;
81.
    }
82.
}  | Out-GridView 
Mitglied: 138810
14.03.2019 um 12:13 Uhr
Ich denke ein PSCustomObject wäre das richtige, damit komme ich aber nicht klar und bitte um Hilfe.
Powershell: Everything you wanted to know about PSCustomObject
Bitte warten ..
Mitglied: Marabunta
14.03.2019 um 12:31 Uhr
Das hilft zwar, aber die Erfassung der WSUS Updates mit den Ids und Status für die Untergruppen ist bereits Problematisch.
Wenn ich die zu fassen kriege, ist das bauen des Objekts wahrscheinlich relativ leicht.
Bitte warten ..
Mitglied: 138810
14.03.2019, aktualisiert um 13:01 Uhr
Wenn ich die zu fassen kriege
Ein zwei Kaffee und ab die Post .
Bitte warten ..
Mitglied: LotPings
14.03.2019 um 18:28 Uhr
Zitat von Marabunta:
$Updates | ForEach-Object {
$update = $_
ForEach-Object ist langsamer als ein foreach, wenn du sowieso das aktuelle Object kopierst kannst du besser so coden:

01.
foreach($update in $Updates){
Dein PSCustomObject mit Code mit PSCustomObject mit CODE ... ist reichlich unübersichtlich,
wie soll die Struktur denn letztendlich aussehen und kannst du das mit Out-GridView überhaupt sinnvoll darstellen?

Gruß
LotPings
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Powershell Skript Ändern - Mehrere Hotfix IDs finden

Frage von pixel0815Batch & Shell1 Kommentar

Moin Moin lässt sich folgendes Skript so erweitern das man mehrere Patch IDs suchen kann? Habe das Skript im ...

Erkennung und -Abwehr

IDS Empfehlung

Frage von joergErkennung und -Abwehr2 Kommentare

Hallo zusammen, kann mir jemand ein kommerzielles IDS empfehlen, ggf. vielleicht auch schon ein paar Vor- und Nachteile? SNORT ...

Erkennung und -Abwehr

Firewall IDS

gelöst Frage von BergEnteErkennung und -Abwehr10 Kommentare

Hallo Zusammen, ich bin auf der Suche nach einer Firewall-IDS Lösung die ich unkompliziert in Firmennetzwerke intregrieren kann. Es ...

Windows Update

WSUS Event IDs 2008, 2008 R2, 2012 und 2012 R2

gelöst Frage von agentjoe1988Windows Update5 Kommentare

Hallo liebe Administrator.de-Gemeinschaft, um ein Monitoring für WSUS zu erstellen und analog zu SCCM zu überwachen, muss ich irgendwie ...

Neue Wissensbeiträge
Administrator.de Feedback
Was als Noob hier mal gesagt werden musste
Information von th30ther vor 1 TagAdministrator.de Feedback2 Kommentare

Moinsen wertes Forum, ich möchte mich an dieser Stelle mal beim Forum generell und bei aqui speziell bedanken! Ich ...

Windows 10
Windows 10 Mai 2019 Update (Version 1903) ist da
Information von kgborn vor 1 TagWindows 104 Kommentare

Nur ein kurzer Infosplitter: Microsoft hat die Nacht (21. Mai 2019) das Funktionsupdate auf Windows 10 Version 1903 freigegeben. ...

E-Mail

Newsletter: Unread News - IT News in Byte Länge

Tipp von franktaylor vor 1 TagE-Mail11 Kommentare

Hallo, würde gerne auf einen Newsletter hinweisen, den ich heute per Zufall gefunden und mit euch gerne teilen möchte: ...

Outlook & Mail

Outlook 2016 stürzt ab, wenn man ein (at)- Zeichen im Text einer neuen E-Mail schreibt

Tipp von Enriqe vor 2 TagenOutlook & Mail4 Kommentare

Bei uns in der Firma häuften sich die Fälle, bei denen sich Outlook kommentarlos verabschiedet, wenn man ein - ...

Heiß diskutierte Inhalte
Hyper-V
Novell virtualisieren
Frage von spoboeHyper-V20 Kommentare

Hallo zusammen, ich habe absolut keine Ahnung von Novell, aber wir haben hier ein ganz altes Schätzchen (vermutlich Novell ...

Windows Server
Ungewollte IP Änderung am DC sorgt für Probleme
Frage von thomas-99Windows Server19 Kommentare

Hallo Zusammen, wir haben ein kleines Netz mit 5 verschiedenen VMs (DC, AD, Fileserver, Exchange, TK Anlage - alle ...

Windows Netzwerk
Netzlaufwerk: einfache Liste der täglich gelöschten, geänderten+neuen Files
gelöst Frage von mylightWindows Netzwerk17 Kommentare

wir haben Windows Clients, das zentrale Teamlaufwerk liegt auf einem Netzwerkserver (ca. 100Gb, 10.000 Verzeichnisse, 180.000Dateien), auf die Konsole ...

Netzwerkmanagement
Gateprotect Firewall - Internetseiten werden teilw. nicht geladen
Frage von KivasFNetzwerkmanagement16 Kommentare

Morgen Zusammen, ich habe ein Problem mit einer Gateprotect Firewall welches mir echt Kopfschmerzen bereitet. Die Firewall hängt an ...