Kuddel071089 9 Geschrieben 16. April 2019 Melden Teilen Geschrieben 16. April 2019 Hallo zusammen, auf Grund Ressourcenengpässen in unserer VMware Umgebung, wollen wir die Installation von WindowsUpdates auf mehrere Wochentage verteilen. Aktuell startet die Installation immer am Dienstag um 3 Uhr. Jetzt würden wir gern per AD-Gruppe und GPO den Installationstag festlegen (Montag bis Donnerstag). Woran ich aktuell scheiter, ist der Vergleich der Mitglieder der einzelnen Gruppen. Beim Ausrollen soll die VM automatisch in der AD-Gruppe mit den wenigsten Mitglieder landen: Montag = 10 Server Dienstag = 5 Server Mittwoch = 9 Server Der Server, bzw. das Computerobjekt, soll jetzt automatisch in der Gruppe für Dienstag landen und das GPO für Dienstag bekommen. Hat jemand einen Tip, wie ich den Vergleich per Powershell hinbekomme? Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 16. April 2019 Melden Teilen Geschrieben 16. April 2019 (bearbeitet) Wie sieht denn Dein Code bisher aus? Mal ganz abstrakt betrachtet, liest Du die Gruppen aus, ermittelst deren Mitgliederzahl mit der .count() - Methode, die jedes Array mitbringt, sortierst die 3 Gruppen nach dieser Anzahl und nimmst die erste oder letzte - je nach dem, wie rum Du sortiert hast. bearbeitet 16. April 2019 von BOfH_666 Zitieren Link zu diesem Kommentar
Kuddel071089 9 Geschrieben 16. April 2019 Autor Melden Teilen Geschrieben 16. April 2019 Aktuell sieht es so aus: cls $groups = Get-ADGroup -Filter {Name -like "WSUS*"} foreach($group in $groups) { $anzahl = Get-ADGroupMember $group.Name $anzahl.Count } Damit bekomme ich die MitgliederAnzahl ausgewertet. Leider weiß ich jetzt nicht, wie ich diese Anzahlen miteinander verlgeichen kann Zitieren Link zu diesem Kommentar
Kuddel071089 9 Geschrieben 16. April 2019 Autor Melden Teilen Geschrieben 16. April 2019 Hab mal ein wenig rumgespielt: $gruppe1 = 10 $gruppe2 = 100 $gruppe3 = 4000 $gruppe4 = 220 $array = [array]$gruppe1,$gruppe2,$gruppe3,$gruppe4 $min = $array | measure -Minimum $min = $min.Minimum if($gruppe1 -eq $min) {$gruppe = "Gruppe 1"} if($gruppe2 -eq $min) {$gruppe = "Gruppe 2"} if($gruppe3 -eq $min) {$gruppe = "Gruppe 3"} if($gruppe4 -eq $min) {$gruppe = "Gruppe 4"} $gruppe Jetzt wird mir als Ergebnis "Gruppe 1" angezeigt, was in meinen Augen richtig ist Zitieren Link zu diesem Kommentar
testperson 1.677 Geschrieben 16. April 2019 Melden Teilen Geschrieben 16. April 2019 Hi, hier müsste quick'n'dirty deine Logik drin sein. $Gruppen = @() foreach ($Gruppe in (Get-ADGroup -Filter {Name -like "WSUS*"})){ if($(Get-ADGroupMember $Gruppe.Name).Count -ge 0){ $temp = New-Object PSObject -Property @{ Gruppe = $Gruppe.Name Mitglieder = $(Get-ADGroupMember $Gruppe.Name).Count } $Gruppen += $temp } } ($Gruppen | Sort-Object Mitglieder)[0].Gruppe Gruß Jan Zitieren Link zu diesem Kommentar
Beste Lösung BOfH_666 577 Geschrieben 16. April 2019 Beste Lösung Melden Teilen Geschrieben 16. April 2019 Probier ma das hier: $groups = Get-ADGroup -Filter { Name -like "WSUS*" } $GroupList = foreach ($group in $groups) { [PSCustomObject]@{ Group = $group.name MemberCount = (Get-ADGroupMember -Identity $group.Name).count } } $GroupList | Sort-Object -Property MemberCount Wenn Du jetzt noch ein Select-Object -First 1 dran hängst, hast Du die Gruppe mit den wenigsten Mitgliedern. Zitieren Link zu diesem Kommentar
Kuddel071089 9 Geschrieben 16. April 2019 Autor Melden Teilen Geschrieben 16. April 2019 Jo super, funzt Vielen Dank Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.