0

I am attempting to write some scripts to match a partial AD user account name into a get-aduser script to return the objects for another routine.

However, the command when executed it returning a parse error

The strange thing is that when checking the syntax of the output, it looks AOK:

PS C:\Users> $ADUserString = "dcro"

PS C:\Users> write-host get-aduser -filter "{SAMAccountName -like '"$ADUserString*'"}"

get-aduser -filter {SAMAccountName -like "dcro*"}

Note: I have used the right-tick character ` prepeding the quotes on the variable to keep them as a string value

So when executing the command:

PS C:\Users> get-aduser -filter "{SAMAccountName -like "$ADUserString*"}"

get-aduser : Error parsing query: '{SAMAccountName -like "dcro"}' Error Message: 'syntax error' at position: '1'. At line:1 char:1 + get-aduser -filter "{SAMAccountName -like "$ADUserString*"}" + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ParserError: (:) [Get-ADUser], ADFilterParsingException + FullyQualifiedErrorId : Error parsing query: '{SAMAccountName -like "dcro*"}' Error Message: 'syntax error' at position: '1'.,Microsoft.ActiveDirectory.Management.Commands.GetADUser*

However, if I manually type the output from my 'write-host' above, it executes perfectly fine and returns the results I am after:

PS C:\Users> get-aduser -filter {samaccountname -like "dcro*"}

DistinguishedName : CN=Dan*****,OU=A*****port,OU=Development*****************

Enabled : True

GivenName : D****

Name : D*****Cro****

ObjectClass : user

ObjectGUID : 796b**********413-558d*****d73

SamAccountName : dcro*****

SID : S-1******************67

Surname : Cro******

UserPrincipalName : dcro***********

It's pretty odd, and my feeling is that there are some weird special characters at play here.....

2 Answers 2

0

Try this:

$ADUserString = "dcro*"
write-host (Get-ADUser -Filter {SamAccountName -like $ADUserString} | Out-String)
Sign up to request clarification or add additional context in comments.

Comments

0

Workaround I found was this (not so pretty).

$ADUserString = "dcro"
$AdUserStringWildCard = "$AdUserString*"
Get-ADUser -Filter {SamAccountName -like $AdUserStringWildCard}

Have you tried LDAPFilter anr instead? I know it tends to be iffy but might work in your scenario. It seems good at completing usernames.

Get-ADUser -LDAPFilter "(anr=$ADUserString)"

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.