none
Get-ADUser -Filter multiple Filter RRS feed

  • Frage

  • Hallo zusammen,

    ich habe eine realtiv simple Frage die sich mir nicht beantwortet :

    $Users = Get-ADUser -Filter {Enabled -eq $true -and (emailaddress -like "*@XYZ.de"  -or emailaddress -like "") } -property 'emailaddress' | sort Name

    Funktioniert nicht:

    Get-ADUser : Error parsing query: ''Enabled' -eq $true -and (emailaddress -like "*@XYZ.de"  -or emailaddress -like "") ' Error Message: 'syntax error' at position: '1'.
    At C:\Users\sa-rh\Documents\Scripts\ChangeUPN.ps1:9 char:10
    + $Users = Get-ADUser -Filter {'Enabled' -eq $true -and (emailaddress -like "*@bwb ...
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : ParserError: (:) [Get-ADUser], ADFilterParsingException
        + FullyQualifiedErrorId : ActiveDirectoryCmdlet:Microsoft.ActiveDirectory.Management.ADFilterParsingException,Microsoft.ActiveDirectory.Management.Commands.GetADUser

    $Users = Get-ADUser -Filter {Enabled -eq $true -and  emailaddress -like "" } -property 'emailaddress' | sort Name

    Funktioniert?!

    Wieso das

    Gruß


    ooGDoo

    Freitag, 7. Juli 2017 11:48

Antworten

  • Es liegt daran das man kein -like "" setzen kann bzw darf. Es muss offensichtlich heißen: -notlike "*". Warum weiß ich nicht. Und auch das reicht nicht aus.

    Es muss ganz korrekt folgendermaßen heißen:

    $Users = Get-ADUser -Filter {(emailaddress -like "*@XYZ.de"-and Enabled -eq $true) -or (emailaddress -notlike "*" -and Enabled -eq $true)} -property 'emailaddress' | sort Name


    ooGDoo

    • Als Antwort markiert ooGDoo Freitag, 7. Juli 2017 13:15
    Freitag, 7. Juli 2017 13:15

Alle Antworten

  • $Users = Get-ADUser -Filter {(emailaddress -like "*@XYZ.de")-or (emailaddress -like "" -and Enabled -eq $true)} -property 'emailaddress' | sort Name

    Funktioniert im übrigen auch nicht


    ooGDoo

    Freitag, 7. Juli 2017 11:51
  • > $Users = Get-ADUser -Filter {Enabled -eq $true -and (emailaddress -like "*@XYZ.de"  -or emailaddress -like "") } -property 'emailaddress' | sort Name

    Setz die Strings mal in ' statt in " - vielleicht verschluckt sich das an dem @?

    Freitag, 7. Juli 2017 12:41
  • .... wollte ich auch grad schreiben ....  vielleicht lässt Du das "@" sogar ganz weg ...  ungefähr so:
    $Users = Get-ADUser -Filter "emailaddress -like '*XYZ.de' -or (emailaddress -like '' -and Enabled -eq $true)" -Properties 'emailaddress' | Sort-Object -Property Name


    Grüße - Best regards

    PS:> (79,108,97,102|%{[char]$_})-join''

    Freitag, 7. Juli 2017 12:52
  • Hallo,

    in der aout hilfe von active Directory findest du auch ein Menge zum Thema (about_ActiveDirectory_Filter)

    ich weis nicht ob es einen unterschied macht ob man email oder emailadresse nimmt, mit der ldapquery sparrst du vieleicht ein paar millisekunden :D

    Get-ADUser -filter 'enabled -eq $true -and email -like "*"'
    Get-ADUser -LDAPFilter "(&(userAccountControl:1.2.840.113556.1.4.803:=2)(mail=*))"

    Freitag, 7. Juli 2017 13:12
  • Es liegt daran das man kein -like "" setzen kann bzw darf. Es muss offensichtlich heißen: -notlike "*". Warum weiß ich nicht. Und auch das reicht nicht aus.

    Es muss ganz korrekt folgendermaßen heißen:

    $Users = Get-ADUser -Filter {(emailaddress -like "*@XYZ.de"-and Enabled -eq $true) -or (emailaddress -notlike "*" -and Enabled -eq $true)} -property 'emailaddress' | sort Name


    ooGDoo

    • Als Antwort markiert ooGDoo Freitag, 7. Juli 2017 13:15
    Freitag, 7. Juli 2017 13:15