[Powershell]Replace, Remove, Split?

timo2607

Lieutenant
Registriert
Feb. 2011
Beiträge
725
Hallo liebe Community,

ich habe eine Frage. Ich habe eine Variable gefüllt mit einem String. Dieser String enthält teilweise Informationen die ich benötige. Der Großteil allerdings ist für meine Zwecke "Müll" und will entsorgt werden :).

Um das "Problem" eventuell noch besser verstehen, hier ein Beispiel:

PHP:
CN=Informationen,OU=Organisationsgruppen,OU=Gruppen,OU=XXX,DC=XXX,DC=XXX,XXX=XXX

Die Informationen die ich benötige sind folgende

PHP:
CN=Informationen

Ich möchte quasi, dass alles nach dem 1. Komma gelöscht wird. Ich habe es mit Replace versucht, allerdings habe ich es damit nicht hinbekommen bzw. stelle es falsch an. Ich habe schon an Split gedacht, aber auch da finde ich leider keinerlei Infos darüber, wie ich das anstelle.

Hat jemand einen Tipp für mich, wie ich meinen String entsprechend abändern kann?

Vielen Dank für die Hilfe :)

Gruß
Timo
 
Code:
$str -match "CN=(?<CN>.*?)[,|$]"
Die Info steht dann in $Matches.
 
Yuuri schrieb:
Code:
$str -match "CN=(?<CN>.*?)[,|$]"
Die Info steht dann in $Matches.

Hat problemlos funktioniert, vielen Dank :)
 
Oder so, falls sich die Reihenfolge nicht veraendert:
Code:
$str -Split ',' | Select-Object -First 1
 
Yuuri schrieb:
Code:
$str -match "CN=(?<CN>.*?)[,|$]"
Die Info steht dann in $Matches.


Das wird dir aber irgendwann Probleme bereiten, da der Common Name (CN) im Distinguished Name auch Kommas (mit Backslash \ als Escape Character) enthalten darf und kann.
Eigentlich sind so ziemlich alle Zeichen erlaubt. Siehe: https://social.technet.microsoft.co...12.active-directory-characters-to-escape.aspx

Beispiel:
Code:
CN=Informationen\, Test123,OU=Organisationsgruppen,OU=Gruppen,OU=XXX,DC=XXX,DC=XXX,XXX=XXX

Woher hast du den String?
Wenn direkt ausm Active Directory, dann frag doch direkt den CN ab.

Ansonsten einfach per Split und dem ersten Index 0, da der CN immer am Anfang des Distinguished Names steht, gefolgt von der Organizational Unit ,OU=
Code:
($str -split ',OU=')[0]

Mit RegEx bestimmt auch irgendwie machbar, aber so fit bin ich darin nicht.
 
Zuletzt bearbeitet:
Zurück
Oben