it-swarm.com.de

Wie listen Sie die AD-Gruppenmitgliedschaft für AD-Benutzer auf, indem Sie die Eingabeliste verwenden?

Ich bin ein ziemlich neuer PS-Benutzer ... Auf der Suche nach Unterstützung bei einem Powershell-Skript, um eine Liste der Sicherheitsgruppen zu erhalten, in denen der Benutzer Mitglied ist.

Um zu beschreiben, was ich brauche:

  • Ich habe eine Eingabeliste (TXT-Datei) mit vielen Benutzern (Samaccountnames). Jeder Name steht in einer neuen Zeile.
  • Ich brauche das Skript, um diese Namen in AD zu durchsuchen - die gesamte Gesamtstruktur, nicht nur eine einzige Domäne
  • die Ausgabe sollte wie "samaccountname" aussehen und die Liste der Gruppen, in denen dieses Konto Mitglied ist, in einer Zeile darstellen, sodass ich es in Excel sortieren kann

Dies ist das Skript, das ich habe:

$users = Get-Content C:\users.txt

ForEach ($User in $users) {
  $getmembership = Get-ADUser $User.Users -Properties MemberOf | Select -ExpandProperty memberof
  $getmembership | Out-File -Append c:\membership.txt 
}

aber es wirft einen Fehler:

Get-ADUser : Cannot validate argument on parameter 'Identity'. The argument is null. Supply a non-null argument and try the command again.
At line:4 char:28
+ $getmembership = Get-ADUser <<<<  $User.Users -Properties MemberOf | Select -ExpandProperty memberof
    + CategoryInfo          : InvalidData: (:) [Get-ADUser], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.GetADUser

Jedenfalls würde dieses Skript nicht den gesamten Wald durchsuchen.

Beispieleingangsliste:

username1
username2
username3
username4... etc

Beispielausgabeliste

username1;group1;group2;group3
username2;group1;group2;group3;group4... etc or something similar

Jede Hilfe wäre sehr dankbar.

9
Martin_K

First : Die $User-Variable verfügt derzeit nicht über eine .Users-Eigenschaft. In Ihrem Code steht $User einfach für eine Zeile (die "aktuelle" Zeile in der foreach-Schleife) aus der Textdatei.

$getmembership = Get-ADUser $User -Properties MemberOf | Select -ExpandProperty memberof

Zweitens , ich glaube nicht, dass Sie eine gesamte Gesamtstruktur mit einem Befehl abfragen können. Sie müssen es in kleinere Stücke aufteilen:

  1. Abfrage Gesamtstruktur für Liste von Domänen
  2. Rufen Sie Get-ADUser für jede Domäne auf (möglicherweise müssen Sie alternative Anmeldeinformationen über den Parameter -Credential angeben

Drittens , um eine Liste von Gruppen zu erhalten, in denen ein Benutzer Mitglied ist:

$User = Get-ADUser -Identity trevor -Properties *;
$GroupMembership = ($user.memberof | % { (Get-ADGroup $_).Name; }) -join ';';

# Result:
Orchestrator Users Group;ConfigMgr Administrators;Service Manager Admins;Domain Admins;Schema Admins

Viertens : Um das endgültige, gewünschte Zeichenfolgenformat zu erhalten, fügen Sie einfach den $User.Name, ein Semikolon und die $GroupMembership-Zeichenfolge hinzu:

$User.SamAccountName + ';' + $GroupMembership;
12
Trevor Sullivan
Get-ADPrincipalGroupMembership username | select name

Ich habe es von einer anderen Antwort bekommen, aber das Skript wirkt magisch. :)

7
genius_monkey

Oder fügen Sie "Sortenname" zur alphabetischen Liste hinzu

Get-ADPrincipalGroupMembership username | select name | sort name
1
nilz76

Der nachstehende Code gibt die Gruppennamen der Benutzernamen unter Verwendung des Samaccount-Namens zurück. Sie können es ändern, um Eingaben aus einer Datei zu erhalten, oder die Abfrage ändern, um Konten mit nicht ablaufenden Kennwörtern usw. abzurufen

$location = "c:\temp\Peace2.txt"
$users = (get-aduser -filter *).samaccountname
$le = $users.length
for($i = 0; $i -lt $le; $i++){
  $output = (get-aduser $users[$i] | Get-ADPrincipalGroupMembership).name
  $users[$i] + " " + $output 
  $z =  $users[$i] + " " + $output 
  add-content $location $z
}

Beispielausgabe:

 Administrator Domänenbenutzer Administratoren Schema Admins Unternehmensadministratoren Domänenadministratoren Besitzer der Gruppenrichtlinienersteller 
 Gastdomänengäste Gäste 
 Krbtgt Domänenbenutzer RODC-Kennwortreplikationsgruppe verweigert 
 Redacted Domain Users CompanyUsers Production 
 Redacted Domain Users CompanyUsers Produktion 
 Redigierte Domainbenutzer CompanyUsers Production 
0
notforsale