windelterrorist
Goto Top

Mit PowerShell die Berechtigungen eines AD-Users auslesen

Huhu Admins

Brauch eine hoffentlich kleine Unterstützung von euch im PowerShell Bereich. Versuche mit diesem Befehl die AD-User Information (wichtig ist vor allem Member Of) auszulesen:

get-aduser -filter * -properties * | select-object Name,UserPrincipalName,HomeDirectory,MemberOf | export-csv C:\export-aduser.csv -notypeinformation -delimiter ";" -encoding utf8;  


Im csv File listet er folgendes in der Spalte Member Of:
Microsoft.ActiveDirectory.Management.ADPropertyValueCollection


Was mache ich falsch? Ausserdem listet er mir zu viele User, ich möchte nur folgende Benutzer auflisten:
domain.ch/Exchange/Users/City/


Vielen Dank schon Mal im Voraus für eure Hilfe!


Grüsse
Windelterrorist

Content-ID: 301074

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

Ausgedruckt am: 22.11.2024 um 11:11 Uhr

colinardo
Lösung colinardo 06.04.2016 aktualisiert um 20:33:56 Uhr
Goto Top
Hallo windelterrorist,
hatten wir schon mal hier: MemberOf ist eine "MultiValued-Property" die du erst zu einem String expandieren und das Array zusammenfassen musst. In meinem Beispiel über eine calculated property gelöst.
AD Gruppen User auslesen

Ausserdem listet er mir zu viele User, ich möchte nur folgende Benutzer auflisten: domain.ch/Exchange/Users/City/
Dafür gibt es den Parameter -SearchBase von Get-AdUser dort gibst du einfach deine OU an aus der du die User auslesen willst:
get-aduser -filter * -SearchBase 'OU=City,OU=Users,OU=Exchange,dc=domain,dc=ch' -properties *  
Des weiteren gibt es in diesem Zusammenhang den Parameter -SearchScope der angibt ob alle untergeordneten OUs rekursiv mit ausgelesen werden sollen(SubTree)[Standard] oder nur diese explizite Ebene (Onlevel).

Grüße Uwe

p.s. anstatt -Properties * solltest du dort besser nur die Eigenschaften angeben welche du zusätzlich auslesen willst, das spart Ressourcen und vor allem Zeit für den Export.
windelterrorist
windelterrorist 07.04.2016 aktualisiert um 08:33:40 Uhr
Goto Top
Hallo Colinardo

Okay einer der beiden Punkte funktioniert prima, es werden nur noch die gewünschten User exportiert... aber warum listet er mir in der Spalte "Member Of" diesen Eintrag:

Microsoft.ActiveDirectory.Management.ADPropertyValueCollection


Verstehe ich etwas falsch? Die Gruppen, in denen diese User sein sollten, heissen anders. Ich müsste die Berechtigungen vergleichen können...


[edit]
Entschuldige, habe deine ersten beiden Zeilen wohl etwas zu schnell gelesen... kannst du mir evt helfen wie ich beides zusammenfüge? Stehe gerade etwas an.
colinardo
colinardo 07.04.2016 aktualisiert um 09:21:59 Uhr
Goto Top
Da liefert man es schon frei Haus und es ist immer noch nicht genug face-confused
Import-Module ActiveDirectory
get-aduser -filter * -SearchBase 'OU=City,OU=Users,OU=Exchange,dc=domain,dc=ch' -properties Name,MemberOf,UserPrincipalName,HomeDirectory | select Name,UserPrincipalName,HomeDirectory,@{n="Gruppen";e={$_.MemberOf -join "|"}} | export-csv 'C:\export-aduser.csv' -delimiter ";" -NoTypeInformation -Encoding UTF8  
windelterrorist
windelterrorist 07.04.2016 aktualisiert um 09:41:58 Uhr
Goto Top
So habe ich das auch hingekriegt, nur listet er folgendes in der Spalte "Gruppen":

CN=GS_Users_xx,OU=Groups,OU=Exchange,DC=domain,DC=ch|CN=city,OU=DistributionGroups,OU=Exchange,DC=domain,DC=ch


Wo ist der Hacken?
colinardo
Lösung colinardo 07.04.2016 aktualisiert um 10:14:58 Uhr
Goto Top
Zitat von @windelterrorist:
Wo ist der Hacken?
Es gibt keinen face-smile und Hacken tu ich nur meinen Garten face-wink , das sind nur die DN der Gruppen, logisch! Den Namen der Gruppe siehst du ja am CN.

Wenn du stattdessen nur den "einfachen" Namen der Gruppe willst baust du einfach über das Array der DNs eine Schleife und nimmst die Name EIgenschaft und joinst das Array zu einem String der die Gruppen z.B. mit einem Komma voneinander trennt.
Import-Module ActiveDirectory
get-aduser -filter * -SearchBase 'OU=City,OU=Users,OU=Exchange,dc=domain,dc=ch' -properties Name,MemberOf,UserPrincipalName,HomeDirectory | select Name,UserPrincipalName,HomeDirectory,@{n="Gruppen";e={($_.MemberOf | %{Get-ADGroup $_}).Name -join ','}} | export-csv 'C:\export-aduser.csv' -delimiter ";" -NoTypeInformation -Encoding UTF8  
windelterrorist
windelterrorist 07.04.2016 um 10:19:32 Uhr
Goto Top
Verstehe, sieht auch schon einiges besser aus face-smile

Dennoch listet er nur eine Gruppe auf... Obwohl zB der User XY in 2-3 Gruppen drin ist, listet er nur eine davon auf. Es ist auch immer dieselbe Gruppe, welche in der Spalte eingetragen wird.
colinardo
Lösung colinardo 07.04.2016 aktualisiert um 10:31:02 Uhr
Goto Top
Hast du noch eine alte Powershell? Dann musst du es etwas modifizieren:
Import-Module ActiveDirectory
get-aduser -filter * -SearchBase 'OU=City,OU=Users,OU=Exchange,dc=domain,dc=ch' -properties Name,MemberOf,UserPrincipalName,HomeDirectory | select Name,UserPrincipalName,HomeDirectory,@{n="Gruppen";e={($_.MemberOf | %{Get-ADGroup $_} | select -Expand Name) -join ','}} | export-csv 'C:\export-aduser.csv' -delimiter ";" -NoTypeInformation -Encoding UTF8  
Geht einwandfrei. Natürlich wird hier in diesem Beiepiel keine Gruppen-Expansion vorgenommen, also keine Rekursiven Gruppenmitgliedschaften (Gruppe in Gruppe) gelistet.
Außerdem ist die primäre Gruppe des Users nicht Bestandteil dieser Eigenschaft, diese ist in einer anderen Eigenschaft des User-Objekts enthalten, namentlich ist das die EIgenschaft PrimaryGroup!
windelterrorist
windelterrorist 07.04.2016 um 10:50:57 Uhr
Goto Top
Ja habe ich... face-sad

Version 4.0 (Get-Host)... Aber vielen Dank für den Hinweis. Nun habe ich die nötigen Informationen, habe es erst gar nicht erblickt face-big-smile


Ich danke dir, colinardo!