none
PowerShell Alle User mit zugehöriger OU anzeigen lassen (Format-Table Element manipulieren) RRS feed

  • Frage

  • Hallo,

    ich möchte ein Skript das mir alle Usernamen mit Anmeldenamen mit zugehöriger OU anzeigt.

    Momentan habe ich folgendes:

    Get-ADUser -Filter 'UserPrincipalName -like "*@*"' -SearchBase "DC=xyz,DC=xyz,DC=xyz" -properties * | Format-Table -Property DisplayName, SAMAccountname, UserPrincipalName, distinguishedname

    Im distinguished name ist auch die ou, allerdings zusammen mit dem CN und der Domäne. Ich möchte diese Tabellenspalte so formatieren, das nur die OU angezeigt wird. Wie mache ich das? Weiß jemand Rat?

    (Es gibt halt mehrere OU's in denen Benutzeraccounts enthalten sind.)

    Mittwoch, 20. Januar 2021 14:46

Antworten

  • Moin,

    klar ist das möglich. Aber bitte

    a. Poste Code als Code (2. Button von rechts)

    b. verwende nicht -Properties *, besonders, wenn Du danach nur Properties verwendest, welche im Standard-Satz enthalten sind ;-)

    c. Dein Filter ist äquivalent zu *, oder kennst Du noch ein anderes Format für den UserPrincipalName? Es sei denn, Du hast ein krudes IDM-System oder Dein AD ist von einer Windows NT-Domäne upgedated worden, und die ältesten User haben gar keinen UPN...

    Deine Freunde für diese Aufgabe sind:

    1. Die Expression-Properties - da, wo Du die OU-Property stehen hättest, wenn es die so gäbe, schreibst Du 

    @{Label='OU';Expression={<codeblock mit Ausdruck, $_ ist das aktuelle Element>}}

    2. String-Methoden: .Substring(), .IndexOf() oder -split und -join. Beim ersten Ansatz suchst Du nach dem ersten Vorkommen von 'OU=' sowie nach dem ersten Vorkommen von 'DC=', und der gesuchte String ist alles dazwischen. Beim zweiten Ansatz zerlegst Du den String nach ',' (funktioniert nur, wenn das Komma nicht in den jeweiligen Teilen vorkommt), filterst nur die Teile raus, die mit 'OU=' beginnen und joinst das Ganze wieder mit dem Komma.


    Evgenij Smirnov

    http://evgenij.smirnov.de

    Mittwoch, 20. Januar 2021 15:20