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, 125 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
Sicherheits-Tools
Putty hat heftige Bugs korrigiert!
Information von Lochkartenstanzer vor 1 TagSicherheits-Tools5 Kommentare

Moin, Wie man aus herauslesen kann, sind in den Versionen vor 0.71 gravierende Bugs, die es angeraten erscheinen lassen, ...

Off Topic
Sachen die die Welt nicht braucht - Platz 1
Tipp von brammer vor 3 TagenOff Topic18 Kommentare

Hallo, ich habs als Tipp angelegt als Erfahrungsbericht nein Danke brammer

Humor (lol)
Spirit of Health-Kongress in Berlin
Information von AnkhMorpork vor 4 TagenHumor (lol)5 Kommentare

tgif! Beim dritten Spirit of Health-Kongress trafen sich am Wochenende Alternativmediziner und Naturheilkundler im Maritim Hotel Berlin, um sich ...

Windows 7

Updates zum Nachrüsten des SHA-2-Support für Windows 7 SP1, Windows Server 2008 (R2) und WSUS 3.0 SP2 sind da

Information von kgborn vor 5 TagenWindows 7

Wie bereits früher angekündigt (Windows 7 u. Server 2008 (R2) SHA-2-Update kommt am 12. März 2019) hat Microsoft die ...

Heiß diskutierte Inhalte
Cloud-Dienste
Remotedesktopverbindungen beeinflussen sich gegenseitig
gelöst Frage von Samy89Cloud-Dienste15 Kommentare

Moin, ich habe mehrere RDPs gleichzeitig laufen, auf denen jeweils ein Script via Powershell läuft. In diesem Prozess benutzt ...

DNS
Größere DNS Probleme nach zweitem DC. Eigentlich sollte es auch dadurch besser werden
Frage von TeWutzDNS12 Kommentare

Hallo zusammen, nachdem ich letzte Woche erfolgreich einen zweiten DC ) an den Start gebracht habe melden sich weiterhin ...

LAN, WAN, Wireless
Switch als Verbindung von 2 Netzwerken
gelöst Frage von Lutz-ReLAN, WAN, Wireless12 Kommentare

Guten Tag Ich hab folgendes Problem 2 Rechner und 2 IP Kameras sind ohne dhcp in einen IP4 Netzwerk ...

Netzwerkgrundlagen
Reicht 10GBit Uplink Port für Stacking für ein 10GBit Switch?
gelöst Frage von walnickNetzwerkgrundlagen12 Kommentare

Hallo, Ich habe eine frage. Ich überlege gerade 2 neue Switche von CiscoSG350XG-24F  zu kaufen und die als Core ...