William Jenkins
William Jenkins

Reputation: 41

Need to split (cutout a part of) the result of a powershell command into a CSV

I have a command that spits outs Active Directory SamAccountName, Description, Distinguished name into a CSV. My issue is that I only need the part of the distinguished name after the user name. I know this is conceptually simple, but I don't know enough about using Splits to get the results.

Here is my command:

get-content users.txt | get-aduser -pr 
    SamAccountName,Description,DistinguishedName | select 
        SamAccountName,Description,DistinguishedName | Export-Csv users.csv 

Here is my output:

Line1-- "user1","user1 description","CN=Lastname\, Firstname(user1),OU=OU2,OU=OU1,OU=Site-1,OU=Accounts_User,DC=domain,DC=company,DC=com"

Line2--- "user2","user2 description","CN=Lastname\, Firstname,OU=OU1,OU=Site-2,OU=Accounts_User,DC=domain,DC=company,DC=com"

What I need is to drop the CN=username2(username2), part of the result. So that my output looks like:

"user2","user2 description","OU=OU1,OU=Site-2,OU=Accounts_User,DC=domain,DC=company,DC=com"

Upvotes: 0

Views: 131

Answers (1)

muratiakos
muratiakos

Reputation: 1092

You can use Select-Object dynamic expressions to manipulate a property and return that as part of your results, by constructing a select expression like:

Select-Object @{Name="NewName"; Expression={..any scriptblock..}}

In your case, I would remove the unwanted string part with a regex, by matching the CN=([^=]*),OU= and leaving only the OU= part only:

$_.DistinguishedName -ireplace "CN=([^=]*),OU=","OU="

So Altogether:

get-content users.txt |
get-aduser -pr SamAccountName,Description,DistinguishedName |
Select SamAccountName,Description, @{Name="NewDN"; Expression={$_.DistinguishedName -ireplace "CN=([^=]*),OU=","OU="}} |
Export-Csv users.csv

Upvotes: 1

Related Questions