Get a specific OU to display from a DN with GET-ADComputer

I have this powershell script :

Get-ADComputer -Filter {(OperatingSystem -NotLike '*server*' -and OperatingSystem -NotLike '*Tap*')} -Property * -Searchbase "OU=Paris,OU=France,OU=Europe,OU=Root,DC=contoso,DC=com" | Select-Object -Property name, @{label='Site';expression={$_.distinguishedName}}
It gives me this result :

name   Site                                                                                        
----   ----                                                                                        
DESKTOP10 CN=DESKTOP10,OU=Desktops,OU=Computers,OU=Paris,OU=France,OU=Europe,OU=Root,DC=contoso,DC=com

How can I get the the OU Paris only that :

Name                          Site
--------                          -------
DESKTOP10                Paris

Who is Participating?
It's a "Regular Expression"
\A - Start of string; "anchors" the following "OU=", so that it is only matches at the start of the string
OU= - plain string to search for
(.*?) - a "capturing group" that just captures any character ".", "*" repeated 0 or more times, "?"non-greedy (the shortest match will be used). This will contain the first OU's name.
, - a plain comma ...
(OU|DC) - ... followed by either "OU" or "DC" ...
= - ... and an equal sign ...
.* - ... and the rest of the string.
Just splitting at a comma would not always do the job properly, as an OU could be named "Paris, France".
Like that, for example:
$SearchBase = "OU=Paris,OU=France,OU=Europe,OU=Root,DC=contoso,DC=com"
$Site = $SearchBase -replace '\AOU=(.*?),(OU|DC)=.*', '$1'
Get-ADComputer -Filter {(OperatingSystem -NotLike '*server*' -and OperatingSystem -NotLike '*Tap*')} -Searchbase $SearchBase |
	Select-Object -Property name, @{label='Site'; expression={$Site}}

Open in new window

And do AD a favor and don't retrieve all AD properties if all you need is the name (which is already in the default set returned).
celmajjAuthor Commented:

Could you explain to me the folling in details :

'\AOU=(.*?),(OU|DC)=.*', '$1'
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.