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, 136 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: freesolo
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: freesolo
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
Datenschutz

SiSyPHuS Win10: Analyse der Telemetriekomponenten in Windows 10

Tipp von freesolo vor 3 TagenDatenschutz1 Kommentar

Alle die sich detailliert für die Datensammlung interessieren die unter Windows 10 stattfindet, sollten sich folgende Analyse des BSI ...

Sicherheit
Adminrechte dank Intel-Grafikkarte
Information von DerWoWusste vor 3 TagenSicherheit2 Kommentare

ist das Advisory, welches beschreibt, welche Intel HD Graphics Modelle Sicherheitslücken haben, mit denen sich schwache Nutzer zu Admins ...

Internet

EU Urheberrechtsreform: Eingriff in die Internetkultur

Information von Frank vor 3 TagenInternet1 Kommentar

Liebe Besucherin, lieber Besucher, warum erscheint das obere Banner in allen Beiträgen? Aus Protest gegen Teile der geplanten EU-Urheberrechtsreform ...

Windows Server
Windows Backup - FilterManager Event 3
Tipp von NixVerstehen vor 4 TagenWindows Server

Hallo zusammen, ich bin kein gelernter ITler und auch beruflich nicht in dem Feld tätig. Wir setzen in unserem ...

Heiß diskutierte Inhalte
Hyper-V
Hyper-V Manager startet, jedoch keine VM
Frage von NaleorHyper-V14 Kommentare

Hallo zusammen, auf meinem Windows 10 (Build 1703) Notebook von der Arbeit scheint Hyper-V plötzliche nicht mehr zu funktionieren. ...

DNS
50 EUR für Telekom-, Unitymedia- und Vodafone-Kunden
Frage von Zorro1199DNS14 Kommentare

Hallo zusammen, wie evaluieren gerade das korrekte Einhalten von DNS-TTLs durch verschiedene Provider. Aktuell suchen wir noch Kunden der ...

Windows Server
Sonntagsfrage: Welchen Sinn seht Ihr noch im Server 2019 Essentials
Frage von ashnodWindows Server13 Kommentare

Guten Morgen, ich habe gestern den Windows Server 2019 Essentials als Trial in einer VM installiert um mir das ...

Windows Server
Windows 2012 R2 - Skript um Druckerkonfiguration auszulesen und zu setzen
gelöst Frage von Der-PhilWindows Server11 Kommentare

Hallo! Kennt ihr eine Möglichkeit, per Skript die Konfiguration eines Druckers auszulesen und auf einen anderen anzuwenden? Hintergrund: Ich ...