doskias
Goto Top

Automatischer Deny im WSUS auf Grund des Titels

Hallo zusammen,

ich stehe vor der Aufgabe unseren WSUS zu automatisieren. Bislang wurden die Updates immer manuell heruntergeladen und manuell freigegeben. Durch die verstärkte Präsenz von Edge Chromium, soll der WSUS nun wie folgt arbeiten:

1. Edge und Defender - Updates sollen sofort wenn Sie verfügbar sind installiert werden.
2. Die anderen Updates sollen weiterhin Manuell zur Installation freigegeben werden.

Das ließ sich noch ganz einfach realisieren indem ich den WSUS nachts alle Updates automatisch herunterladen lasse und automatisch genehmige, sofern Sie in die Produktkategorie Edge und Defender gehören. Nun hat sich aber herausgestellt, dass es ja beim Edge verscheiden Kanale gibt. Wir wollen lediglich die Stable-Kanalversion. Dev und Beta sollen abgelehnt werden. Ebenso sollen generell alle Updates abgelehnt werden die den Namen Vorschau beinhalten.

Ich habe mir dazu den Artikel von Wolfgang Sommergut durchgelesen. Die Idee schien mir sehr vielversprechend, allerdings bezieht er sich hier nur auf die Kategorien. Nachdem ich einige Zeit investiert hatte, ist mir auch klar wieso:

Get-WsusUpdate -Approval Unapproved |FL -Property Title ,Classification

Zeigt mir leider lediglich die Classification des Updates an, nicht jedoch den Titel. Ich habe dann weiter gesucht und recherchiert und bin auf PowerShell.org fündig geworden. Der Titel versteckt sich als Property im Object Update. Also habe ich den Code dahingehend angepasst. Dieser sieht nun so aus:

Get-WsusUpdate -Approval Unapproved | Select-Object -Property @{Name='Title';Expression={$_.Update.Title}}, Classification | FT -AutoSize  

Das Ergebnis ist soweit gut, allerdings schaffe ich es nicht (und jetzt kommt die Frage) diesen Ausdruck nach den Stichwörtern (Vorschau), Edge-Beta Kanalversion, Edge-Dev Kanalversion zu filtern. In meinem Jugendlichen Leichtsinn habe ich es mit folgendem versucht:
Get-WsusUpdate -Approval Unapproved | Select-Object -Property @{Name='Title';Expression={$_.Update.Title}}, Classification |where @{Name='Title';Expression={$_.Update.Title}} -like "(*vorschau*)" | FT -AutoSize  

Ich bekomme jedoch leider kein Ergebnis angezeigt. Wenn ich die WHERE-Bedingung an andere Stellen verschieben, bekomme ich entweder ebenfalls kein Ergebnis oder eine Fehlermeldung. An welcher Stelle muss bzw. kann ich nun den Update-Titel filtern, damit ich nur noch ein
|Deny-WsusUpdate
für die abgelehnten, bzw. ein Approve-WsusUpdate für den Edge-Stable Kanalversion hinzufügen muss damit mein Skript dann funktioniert. Die automatische Genehmigung muss dann für den Edge logischerweise aus und das Skript wird einmal um Tag als geplanter Task ausgeführt. Damit würde dann der WSUS automatisch die Updates herunterladen, die Dev- und Beta- Versionen des Edge so wie alle Vorschau Updates ablehnen, die Stable Version des Edge genehmigen und alles andere in Ruhe lassen.

Vielen Dank für eure Aufmerksamkeit und Hilfe im Vorraus face-smile

Gruß
Doskias

Content-Key: 589261

Url: https://administrator.de/contentid/589261

Printed on: April 18, 2024 at 18:04 o'clock

Member: emeriks
Solution emeriks Jul 21, 2020 at 07:36:27 (UTC)
Goto Top
Hi,
ein kleiner, allgemeiner Tipp am Rande:

Mach es nicht als "Einzeiler".
Was hindert Dich daran, dass mit - wenn es sein muss: mehreren - If-Abfragen oder sonstwie in einem "Mehrzeiler" zu behandeln?

E.
Member: Doskias
Doskias Jul 21, 2020 at 08:04:36 (UTC)
Goto Top
Geht jetzt hier nicht so gut hervor, aber das war der Plan. Außerdem kommen da später noch Kommentare rein. Ich habe es hier erstmal so zusammengefasst, damit das Problem ersichtlich wird. Zumindest für die ersten Wochen nach der Aktivierung wird es auch Log-Files und E-Mail-Statusberichte geben, die das Skript dann verschickt. Das habe ich für die Übersichtlichkeit und dem Verständnis des Problems hier nicht mit aufgeführt.

Wie ich das dann genau umsetze, kommt erst wenn die Basisabfrage funktioniert und (in dem Fall hier) ich versanden habe wie ich den Filter setze.
Member: Doskias
Doskias Jul 21, 2020 at 08:54:52 (UTC)
Goto Top
So.. nachdem du mir den Floh mit der Schleife ins Ohr gesetzt hast, hab ich das jetzt ohne die Filtermöglichkeit realisiert und zwar wie folgt:

$Updates=Get-WsusUpdate -Approval Unapproved | Select-Object -Property @{Name='Title';Expression={$_.Update.Title}}  
$update_id=get-wsusupdate -Approval Unapproved
$max=$updates.length
for ($i=0;$i -le $max;$i++)
{
    if($updates[$i] -like "*Vorschau*")  
    {
    $Updates[$i]
    $Update_id[$i]|Deny-WsusUpdate
    }
}

Das ganze hat jetzt schon für die Vorschau funktioniert, jetzt kommt noch die Edge-Kanäle mit 2 x Deny und 1 x approve, Zeile 8 wird noch entfernt und dann sollte es so sein, wie gewünscht.
Member: emeriks
emeriks Jul 21, 2020 at 09:33:30 (UTC)
Goto Top
Wo ein Weg ist, da muss auch ein Wille sein! face-wink