Nur die OU aus DistinguishedName ausgeben
Hallo,
ich habe ein einfaches Script um alle aktiven User aus unserem AD auszulesen und verschiedene Felder in einer Textdatei auszugeben.
Jetzt wäre es hilfreich statt dem kompletten DistinguishedName nur die OU des Users auszugeben.
Ich bin mir sicher das ich so etwas schon mal gelesen habe aber momentan fühle ich mich erschlagen von den vielen Google Suchergebnisse.
Für einen Denkanstoss wäre ich dankbar.
ich habe ein einfaches Script um alle aktiven User aus unserem AD auszulesen und verschiedene Felder in einer Textdatei auszugeben.
Jetzt wäre es hilfreich statt dem kompletten DistinguishedName nur die OU des Users auszugeben.
Ich bin mir sicher das ich so etwas schon mal gelesen habe aber momentan fühle ich mich erschlagen von den vielen Google Suchergebnisse.
Für einen Denkanstoss wäre ich dankbar.
$suche = { name -like "*" -and Enabled -eq $true }
$Eigenschaften = "Title","GivenName","state","StreetAddress","telephoneNumber","MobilePhone","facsimileTelephoneNumber","targetAddress","EmailAddress","Company","Country","CN","Manager","City"
$Ausgabe = "DistinguishedName","SamAccountName","Surname","GivenName","Title","state","StreetAddress","telephoneNumber","MobilePhone","facsimileTelephoneNumber","targetAddress","EmailAddress","Company","Country","CN","Manager","City"
$Ausgabedatei = "C:\Temp\Powershell\PS_test.txt"
# Alte Datei loeschen
{
If (Test-Path $Ausgabedatei) {
Remove-Item $Ausgabedatei -whatif
}}
Get-ADUser -SearchBase "OU=Users,OU=xx,DC=xx,DC=xx" -Filter $suche -Properties * | select $Ausgabe |
export-csv $Ausgabedatei -Delimiter ';' -NoType
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 514613
Url: https://administrator.de/contentid/514613
Ausgedruckt am: 26.11.2024 um 14:11 Uhr
4 Kommentare
Neuester Kommentar
Get-ADUser -SearchBase "OU=Users,OU=xx,DC=xx,DC=xx" -Filter $suche -Properties * | select SamAccountName, @{n='OU';e={[regex]::match($_.DistinguishedName,'(?is)OU=.*').Value}}
Zitat von @ChristineS:
Danke für den Hinweis, das hat mich auf die richtige Spur gebracht. Statt match mit split.
@{n='OU';e={$_.DistinguishedName.split(',')[1].split('=')[1]}}
ACHTUNG: FALSCH! Anhand des Kommas kannst du du das nicht zuverlässig machen! Der Grund: Das Komma ist ein gültiges Zeichen für Namen der OU oder CN etc. und kann darin vorkommen deswegen ist die Match-Variante wasserdicht, während Split dir früher oder später auf die Füße fällt und nicht mehr funktioniert wenn Kommas im Namen enthalten sind. Hatte schon seinen Grund warum ich das mit Regex gemacht habe !Danke für den Hinweis, das hat mich auf die richtige Spur gebracht. Statt match mit split.
@{n='OU';e={$_.DistinguishedName.split(',')[1].split('=')[1]}}
Brauchst du nur den "reinen Namen" der ersten OU nach dem CN dann so
Get-ADUser -SearchBase "OU=Users,OU=xx,DC=xx,DC=xx" -Filter $suche -Properties * | select SamAccountName, @{n='OU';e={[regex]::match($_.DistinguishedName,'(?is)(?<=OU=).*?(?=,(OU|CN|DC)=)').Value}}