regexwindowspowershellextractdistinguishedname

REGEX - Extract OU from Distinguished Name


I need to extract "OU" part from my Distinguished Name with REGEX.

For exemple :

"CN=DAVID Jean Louis (a),OU=Coiffeur,OU=France,DC=Paris,DC=France"

"CN=PROVOST Franck,OU=Coiffeur,OU=France,DC=Paris,DC=France"

"CN=SZHARCOFF Michel (AB),OU=Coiffeur_Inter,OU=France,DC=Paris,DC=France"

I need to have

"OU=Coiffeur,OU=France"  

"OU=Coiffeur,OU=France"

"OU=Coiffeur_Inter,OU=France"

I try "CN=SZHARCOFF Michel (AB),OU=Coiffeur_Inter,OU=France,DC=Paris,DC=France" -match "^CN=[\w-()]*[\w]*" But doesn't succeed


Solution

  • You may match all the OU= + 1 or more non-comma substrings with \bOU=[^,]+ regex and then join them with ,:

    $matches = [regex]::matches($s, '\bOU=[^,]+') | % { $_.value }
    $res = $matches -join ','
    

    Output for the first string:

    OU=Coiffeur,OU=France
    

    Pattern details

    See the regex demo.