none
get-member verzögert Ausgabe RRS feed

  • Frage

  • Hallo, 

    ich mache gerade die ersten Gehversuche und bin auf ein für mich nicht erklärliches Phänomen gestoßen. Beim folgenden Script erfolgt die Ausgabe nicht in der erwarteten Reihenfolge des Scrip-Codes, sondern die get-member-Zeile wird erst ausgegeben, wenn ich eine Taste gerückt habe, also nach Read-Host.
    Write-Host "Start";
    $MyInvocation.MyCommand | get-member;
    Read-Host "Please press any Key";
    

    Warum passiert das, wie kann man es umgehen und gibt es andere Stellen, wo ähnliche Effekte auftreten können?
    Danke, RainerR
    Donnerstag, 9. Dezember 2010 18:02

Antworten

  • Das liegt daran, das sich dein Objekt (member von $myInvocation...) immer noch in der Pipeline (|) befindet, ohne das du spezifiziert hättest was damit zu tun ist. Ausgegeben wird es automatisch nur, wenn kein Befehl mehr folgt.

    Wenn du es vorher ausgeben möchtest, hänge z.b. ein OUT-HOST als letzten Befehl in Zeile, also:

    Write-Host "Start"
    $MyInvocation.MyCommand | get-member | Out-Host
    Read-Host "Please press any Key"
    
    es geht aber z.b. auch:
    $MyInvocation.MyCommand | get-member | format-table *
    

    Hier gibt eine sehr gute Erklärung zur Pipeline: The PowerShell Pipeline

    Grüße, Denniver

     

    Donnerstag, 9. Dezember 2010 19:58
    Moderator

Alle Antworten

  • Das liegt daran, das sich dein Objekt (member von $myInvocation...) immer noch in der Pipeline (|) befindet, ohne das du spezifiziert hättest was damit zu tun ist. Ausgegeben wird es automatisch nur, wenn kein Befehl mehr folgt.

    Wenn du es vorher ausgeben möchtest, hänge z.b. ein OUT-HOST als letzten Befehl in Zeile, also:

    Write-Host "Start"
    $MyInvocation.MyCommand | get-member | Out-Host
    Read-Host "Please press any Key"
    
    es geht aber z.b. auch:
    $MyInvocation.MyCommand | get-member | format-table *
    

    Hier gibt eine sehr gute Erklärung zur Pipeline: The PowerShell Pipeline

    Grüße, Denniver

     

    Donnerstag, 9. Dezember 2010 19:58
    Moderator
  • Hallo Denniver,

    danke für die Blitzantwort und den Link. Ich dachte mir sowas und suchte nach dem "Flush" Kommando :-).

    Grüße, Rainer

     

    Donnerstag, 9. Dezember 2010 20:19