145971
29.09.2021
2467
11
0
Suche AD Gruppe, mit den Usern X, Y und Z
Guten Morgen !!
ich habe leider noch keine wirkliche Erfahrung mit der Windows PowerShell, habe aber gelesen, das damit viel möglich ist.
Benötige Hilfe bei folgender Situation:
Möchte gerne wissen, ob es eine Gruppe gibt, wo bestimmte User enthalten sind.
z.B.:
Gibt es eine Gruppe, wo die User
Max.Mustermann
Sabine.Müller
Hans.Muster
enthalten sind?
Wenn ja, wie heißt diese Gruppe?
Gibt es dafür einen Powershell Befehl?
ich habe leider noch keine wirkliche Erfahrung mit der Windows PowerShell, habe aber gelesen, das damit viel möglich ist.
Benötige Hilfe bei folgender Situation:
Möchte gerne wissen, ob es eine Gruppe gibt, wo bestimmte User enthalten sind.
z.B.:
Gibt es eine Gruppe, wo die User
Max.Mustermann
Sabine.Müller
Hans.Muster
enthalten sind?
Wenn ja, wie heißt diese Gruppe?
Gibt es dafür einen Powershell Befehl?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1321401136
Url: https://administrator.de/contentid/1321401136
Ausgedruckt am: 25.11.2024 um 14:11 Uhr
11 Kommentare
Neuester Kommentar
Moin
Ich hab dir mal quick and dirty was runtergeschrieben, daher sind die Namen der Arrays / Variabeln nicht sonderlich schön, es tut aber was es soll.
Was musst du machen: Bei $users listet du nach dem Format wie schon vorgegebenen die User auf (UPN)
Außerdem musst du den Counter in Zeile 9 erhöhen, wenn du mehr als 2 User in $users angibst.
Beispiel: Du hast 4 User -> Counter auf 3 setzen
Hast du 10 User Counter auf 9 setzen.
Was macht das Skript und was NICHT
Das Skript spuckt dir NUR aus, welche Gruppen alle von dir angegebenen Benutzer gemeinsam haben.
Wenn z.B. nur User 1 und User 2 eine Gruppe gemeinsam haben, aber User 3 - 10 nicht, dann wirst du das ohne weiteres so nicht mit dem Skript rausfinden ... wie gesagt quick and dirty.
Am Ende des Skriptes bekommst du eine Ausgabe auf die Shell welche dir die gemeinsamen Gruppen aller angegebenen Benutzer anzeigt.
$groups1 =@()
$users =@("User1", "User2")
foreach ($user in $users)
{
$groups0 = Get-ADPrincipalGroupMembership -Identity $user
$groups1 += New-Object psobject -Property @{user=$user;group=$groups0.name}
}
$groups2 = $groups1 | Sort-Object -Property Group | Group-Object -Property Group | where {$_.Count -gt 1} | Select-Object -ExpandProperty Name
echo $groups2
Ich hab dir mal quick and dirty was runtergeschrieben, daher sind die Namen der Arrays / Variabeln nicht sonderlich schön, es tut aber was es soll.
Was musst du machen: Bei $users listet du nach dem Format wie schon vorgegebenen die User auf (UPN)
Außerdem musst du den Counter in Zeile 9 erhöhen, wenn du mehr als 2 User in $users angibst.
Beispiel: Du hast 4 User -> Counter auf 3 setzen
Hast du 10 User Counter auf 9 setzen.
Was macht das Skript und was NICHT
Das Skript spuckt dir NUR aus, welche Gruppen alle von dir angegebenen Benutzer gemeinsam haben.
Wenn z.B. nur User 1 und User 2 eine Gruppe gemeinsam haben, aber User 3 - 10 nicht, dann wirst du das ohne weiteres so nicht mit dem Skript rausfinden ... wie gesagt quick and dirty.
Am Ende des Skriptes bekommst du eine Ausgabe auf die Shell welche dir die gemeinsamen Gruppen aller angegebenen Benutzer anzeigt.
Oder das ganze in kurz...
$users = 'user1','user2','user3'
$users | %{Get-ADPrincipalGroupMembership $_} | group SamAccountName | ?{$_.Count -eq $users.Count} | select -Expand Name
Zitat von @149569:
Oder das ganze in kurz...
Oder das ganze in kurz...
> $users = 'user1','user2','user3'
> $users | %{Get-ADPrincipalGroupMembership $_} | group SamAccountName | ?{$_.Count -eq $users.Count} | select -Expand Name
>
Ok, klarer Punkt für dich. Ich hab da auf die schnelle für mich irgendwie nur den scheinbar komplizierten Weg gefunden :D
Moin,
Jo, das ist ein echter Toyota.
Ja, der heißt compare-object:
Erstmal vergleichen wir zwei der User:
Das .name bzw. .inputobject sorgt dafür, dass nur diese Spalte ohne Überschriften ausgegeben wird. Nun willst Du aber drei User vergleichen. Dann wickeln wir einfach noch ein compare-object drumherum.
Und schon siehst Du, dass diese drei User in der gemeinsamen Gruppe g_verwaltung sind.
hth
Erik
Zitat von @145971:
ich habe leider noch keine wirkliche Erfahrung mit der Windows PowerShell, habe aber gelesen, das damit viel möglich ist.
ich habe leider noch keine wirkliche Erfahrung mit der Windows PowerShell, habe aber gelesen, das damit viel möglich ist.
Jo, das ist ein echter Toyota.
Gibt es eine Gruppe, wo die User
Max.Mustermann
Sabine.Müller
Hans.Muster
enthalten sind?
Wenn ja, wie heißt diese Gruppe?
Gibt es dafür einen Powershell Befehl?
Max.Mustermann
Sabine.Müller
Hans.Muster
enthalten sind?
Wenn ja, wie heißt diese Gruppe?
Gibt es dafür einen Powershell Befehl?
Ja, der heißt compare-object:
Erstmal vergleichen wir zwei der User:
PS C:\Windows\system32> (Compare-Object (Get-ADPrincipalGroupMembership Max.Mustermann).name (Get-ADPrincipalGroupMembership Sabine.Mueller).name -IncludeEqual -ExcludeDifferent).inputobject
Domänen-Benutzer
g_access2all
g_verwaltung
g_special_logon
Das .name bzw. .inputobject sorgt dafür, dass nur diese Spalte ohne Überschriften ausgegeben wird. Nun willst Du aber drei User vergleichen. Dann wickeln wir einfach noch ein compare-object drumherum.
PS C:\Windows\system32> (compare-object (Compare-Object (Get-ADPrincipalGroupMembership Max.Mustermann).name (Get-ADPrincipalGroupMembership Sabine.Mueller).name -IncludeEqual -ExcludeDifferent).inputobject (Get-ADPrincipalGroupMembership Hans.Muster).name -IncludeEqual -ExcludeDifferent).inputobject
Domänen-Benutzer
g_verwaltung
Und schon siehst Du, dass diese drei User in der gemeinsamen Gruppe g_verwaltung sind.
hth
Erik