none
Problem mit -eq vergleich mit importierter textdatei RRS feed

  • Frage

  • Hallo :=)

    Ich habe ein Problem mit einen Teil meines scripts.

    Und zwar lese ich eine Textdatei ein und speichere diese auf eine Variable / Array.

    Die Textdatei enthält Attributwerte welche sich mit dem AD decken  --> "UserPrincipalName"

    Ich möchte jetzt eine forschleife laufen lassen, die Benutzer danach Filtern ob sie mit dem UserPrincipalName matchen und mir danach die im AD gespeicherte Email zurückgeben lassen.

    Hier der Teil des Scripts

    import-module activedirectory

    $UPNMail = Get-Content .\meineTxtDatei.txt

    for ($i=0; $i -lt $UPNMail.length; $i++) {
        get-aduser -Properties mail -SearchBase "kann ich nicht zeigen weil datenschutz(ist aber sicherlich richtig)" -filter {(UserPrincipalName -eq $UPNMail[$i])}    |
        Select mail }

    Es gibt definitiv matches --> wenn ich anstatt $UPNMail[$i]  einen wert der in der textdatei ist nehme findet er sofort matches.

    Hier die Fehlermeldung:

    Get-ADUser : Fehler beim Analysieren der Abfrage: "(UserPrincipalName -eq $UPNMail[$i])" Fehlermeldung: "Operator Not supported: " an folgender Position: "32".
    Bei Zeile:2 Zeichen:15
    +     get-aduser <<<<  -Properties mail -SearchBase "OU=BenutzerW7,DC=vw,DC=mpg,DC=de" -filter {(UserPrincipalName -eq $UPNMail[$i])}    |
        + CategoryInfo          : ParserError: (:) [Get-ADUser], ADFilterParsingException
        + FullyQualifiedErrorId : Fehler beim Analysieren der Abfrage: "(UserPrincipalName -eq $UPNMail[$i])" Fehlermeldung: "Operator Not supported: " an folgender Position: "32".,Microsoft.ActiveDirectory.Management.Commands.GetADUser
     

    Vielen Dank schonmal :O


    • Bearbeitet MoritzF Freitag, 5. August 2016 13:02
    Freitag, 5. August 2016 13:00

Antworten

  • Moin,

    Get-Content .\meineTxtDatei.txt | 
    foreach {Get-ADUser -Properties mail -SearchBase 'datenschutz..' -filter {(UserPrincipalName -eq $_)} |
        Select-Object mail}

    Es kommt natürlich auf die Qulität deiner Textdatei an, damit das funktioniert.

    Ansonsten noch die etwas längere Version:

    $UPNMail = (Get-Content .\meineTxtDatei.txt).Trim()
    
    foreach ($Eintrag in $UPNMail){
        Get-ADUser -Properties mail -SearchBase 'datenschutz..' -filter {(UserPrincipalName -eq $Eintrag )} |
        Select-Object mail
    }


    Freitag, 5. August 2016 13:44

Alle Antworten

  • ich habe es jetzt so gelöst:

    [String]$string = $UPNMail[$i]
        $string = $string.trim()

    und verglichen wird jetzt mit $string und nichtmehr mit dem array

    Aber gibt es nicht noch eine andere Lösung z.b. casten?


    • Bearbeitet MoritzF Freitag, 5. August 2016 13:31
    Freitag, 5. August 2016 13:30
  • Moin,

    Get-Content .\meineTxtDatei.txt | 
    foreach {Get-ADUser -Properties mail -SearchBase 'datenschutz..' -filter {(UserPrincipalName -eq $_)} |
        Select-Object mail}

    Es kommt natürlich auf die Qulität deiner Textdatei an, damit das funktioniert.

    Ansonsten noch die etwas längere Version:

    $UPNMail = (Get-Content .\meineTxtDatei.txt).Trim()
    
    foreach ($Eintrag in $UPNMail){
        Get-ADUser -Properties mail -SearchBase 'datenschutz..' -filter {(UserPrincipalName -eq $Eintrag )} |
        Select-Object mail
    }


    Freitag, 5. August 2016 13:44