Jump to content

Anzahl Gruppenmitglieder vergleichen


Direkt zur Lösung Gelöst von BOfH_666,
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

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?

 

 

 

 

Link zu diesem Kommentar

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 von BOfH_666
Link zu diesem Kommentar

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

Link zu diesem Kommentar

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

Link zu diesem Kommentar
  • Beste Lösung

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.

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...