none
WPF Anwendung in Powershell; Script innerhalb eines Event-Handlers funktioniert nicht richtig RRS feed

  • Frage

  • Hallo,

    ich habe mir eine WPF Anwendung erstellt und dies in Powershell eingebunden:

    # XML Source for Manage Dynamic Distribution Groups
    [xml]$xamlDynamicDistributionGroups = @" <hier ist der XML Code> "@
    
    # Read XML for Dynamic Distribution Group Window
    $reader=(New-Object System.Xml.XmlNodeReader $xamlDynamicDistributionGroups)
    $WindowDynamicDistributionGroups=[Windows.Markup.XamlReader]::Load($reader)
    
    # Create Variables for Dynamic Distribution Group Window
    $xamlDynamicDistributionGroups.SelectNodes("//*[@Name]") | ForEach-Object { Set-Variable -Name "WPF$($_.Name)" -Value $WindowDynamicDistributionGroups.FindName($_.Name) -Scope Script}
    

    Dann habe ich einen Event-Handler (Click) für einen Button zugefügt:

    $WPFbuttonPreviewGroup.add_Click({
    
    Write-Host "Previewing group"
    $param1 = "`$_." + $WPFComboField1.SelectedValue + " " + $WPFComboBool1.SelectedValue + " " + '"' + $WPFtextValue1.Text + '"'
    
    Write-Host $param1
    $MsolUserList = Import-Csv "allMsolUser.csv" -Delimiter ";"
    $MsolUserList | ft
    $commandstring = '$msolUserList | ?{' + $param1 + '}'
    
    write-host $commandstring
    $x = Invoke-Expression $commandstring -Verbose
    
    write-host "Finished"
    })

    Wenn ich nun das Script ausführe, funktioniert das einlesen der CSV Datei nicht:

    $MsolUserList = Import-Csv "allMsolUser.csv" -Delimiter ";"

    Das merkwürdige daran ist, dass alle anderen Befehle funktionieren.

    write-host $commandstring

    Der Befehl liefert mir z.B. folgendes zurück:

    $msolUserList | ?{$_.City -eq "Paris"}

    Wenn ich den Scriptbereich markiere und mit F8 ausführe, so funktioniert es mit dem gewünschten Ergebnis.

    Dienstag, 21. Juni 2016 12:50

Antworten

Alle Antworten

  • Gib mal einen Pfad für deine csv-Datei an. Auch wenn die Datei im Scriptverzeichnis liegt reicht der Dateiname nicht. (ab Powershell V3 kannst du für das Scriptverzeichnis die Variable $PSScriptRoot benutzen)
    Deine manuellen Versuche waren erfolgreich da hier dein Editor den dort aktuell gesetztem Pfad nutzt.

    Grüßé, Denniver


    Blog: http://bytecookie.wordpress.com

    Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
    Warum das Ganze? Hier gibts die Antwort

    Mittwoch, 22. Juni 2016 12:41
    Moderator
  • Habe ich gemacht, jedoch ohne Erfolg. Ich habe mal testhalber ein "dir" mit eingefügt. Dies gibt mir aber nichts zurück.

    Mir scheint, dass das irgendwie mit Dateioperationen zusammenhängt.

    Mittwoch, 22. Juni 2016 13:32
  • Ok, kopiere mal alles innerhalb des Eventhandlers in ein neues Script, das lässt sich einfacher testen und du bekommst auch ohne Umwege Fehlermeldungen.
    Teste nochmal mit Pfad. (ohne DIR, das hat da nichts zu suchen)
    Wenn es dann immer noch nicht klappt, poste mal den Fehler.

    Blog: http://bytecookie.wordpress.com

    Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
    Warum das Ganze? Hier gibts die Antwort.

    Mittwoch, 22. Juni 2016 13:36
    Moderator
  • Genau das ist ja das komische. Ich hab's mal in ein neues Script kopiert, da funktioniert es einwandfrei.

    Ich bekomme leider keine Fehlermeldung angezeigt, auch nicht wenn das Script über den Eventhandler aufgerufen wird

    Mittwoch, 22. Juni 2016 13:49
  • Arghhh Anfängerfehler.

    Wenn ich

    $MsolUserList | ft

    durch

    write-host $MsolUserList | ft

    ersetze funktionierts

    Freitag, 24. Juni 2016 07:56