Get-AdUser based on a variable with a list of names

This topic contains 4 replies, has 4 voices, and was last updated by Profile photo of Dan Potter Dan Potter 2 months, 2 weeks ago.

Viewing 5 posts - 1 through 5 (of 5 total)
  • Author
    Posts
  • #45652
    Profile photo of Jay Jones
    Jay Jones
    Participant

    I have a variable that contains a list of AD users i.e "Jay Jones". I want to query AD and check that each user in this list has a corresponding account. The problem is that Get-ADUser looks for the users Identity (SamAccountName), and this is done in the format "jayj". So when i issue a command it comes back that none of the users have accounts:

    $UserList | Get-AdUser
    Get-ADUser : Cannot find an object with identity: 'Jay Jones' under: 'DC=domain,DC=com'.
    At line:1 char:12
    + $UserList | Get-ADUser
    +            ~~~~~~~~~~
        + CategoryInfo          : ObjectNotFound: (Jay Jones:ADUser) [Get-ADUser], ADIdentityNotFoundException
        + FullyQualifiedErrorId : ActiveDirectoryCmdlet:Microsoft.ActiveDirectory.Management.ADIdentityNotFoundException,Microsoft.ActiveDirectory.Management.Commands.GetADUser
    

    I know that the format "Jay Jones" matches the property type 'Name' of my AD User account. How can i make Get-ADUser reference the $UserList variable based on the 'Name' property of the account rather than the Identity (SamAccountName)? I cant change the format of the users in the variable to the same as the SamAccountName, otherwise i would!

    #45657
    Profile photo of random commandline
    random commandline
    Participant
    foreach ($user in $userlist){Get-ADUser -Filter {Name -eq $user}}
    
    #45675
    Profile photo of Don Jones
    Don Jones
    Keymaster

    To elaborate:

    If $userlist is a list of string objects, you need to look and see what Get-ADUser will do with those in terms of pipeline binding ByValue. Looking at the help, it's -Identity that's accepting strings ByValue, not -Name. That's why you're getting the error you are. As the answer above demonstrates, you have to manually push the input to -Name by enumerating the list.

    If $userlist had contained values acceptable to -Identity, your first try would have worked.

    #46186
    Profile photo of Jay Jones
    Jay Jones
    Participant

    Thanks for the explanation.

    #46198
    Profile photo of Dan Potter
    Dan Potter
    Participant

    get-aduser -filter "anr -eq 'Jay Jones'"

Viewing 5 posts - 1 through 5 (of 5 total)

You must be logged in to reply to this topic.