none
pipe Datenmenge, Verständnisfrage RRS feed

  • Frage

  • noch eine Frage

    kann man davon ausgehen das bei Powershell  trotzt PIPE immer noch alle Objekte - auch wenn sie mit where gefiltert werden - erhalten und weitergegeben werden. Ich hatte einmal ein GROUP Beispiel, da war vorher ein where und group im letzten  Pipe wurden der group wieder extrahiert. Da muss man anfangs etwas umdenken. Also anders wie bei anderen Systemen.

    zb. bei einer SQL Abfrage gefiltert auf PLZ 10115 sind nur Daten 10115 enthalten. Da könnte man später nie auf mehr Daten zurückgreifen.



    Chris

    Dienstag, 20. Dezember 2016 19:32

Antworten

  • Moin,

    nein, hinter

     | where { <Bedingung> } | 

    sind nur Objekte zu finden, bei denen die Bedingung zutrifft.


    Evgenij Smirnov

    I work @ msg services ag, Berlin -> http://www.msg-services.de
    I blog (in German) @ http://it-pro-berlin.de
    my stuff in PSGallery --> https://www.powershellgallery.com/profiles/it-pro-berlin.de/
    Exchange User Group, Berlin -> http://exusg.de
    Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
    Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com

    • Als Antwort vorgeschlagen BOfH-666 Dienstag, 20. Dezember 2016 19:40
    • Als Antwort markiert -- Chris -- Mittwoch, 21. Dezember 2016 09:53
    Dienstag, 20. Dezember 2016 19:38
  • Nein,

    wenn du pipst gibst du diese Objekte mit den jeweiligen(selektierten) Properties weiter.

    Vielleicht hattest du die Daten in einer Variable gruppiert und hattest diese später abgefragt?

    $gruppe=get-service
    
    $gruppe|Where-Object {$_.status -eq 'Running'}
    $gruppe

    Dann gibt deine where-Abfrage die laufenden Prozesse aus.

    Die Variable $gruppe beinhaltet aber alle Prozesse




    Bis dann, Toni! Wenn Dir meine Antwort hilft dann markiere sie bitte als Antwort! Vielen Dank!



    • Bearbeitet tonibert Dienstag, 20. Dezember 2016 19:47
    • Als Antwort vorgeschlagen tonibert Dienstag, 20. Dezember 2016 19:49
    • Als Antwort markiert -- Chris -- Mittwoch, 21. Dezember 2016 09:53
    Dienstag, 20. Dezember 2016 19:46
  • Eine großartige Möglichkeit, sich anzusehen, was die Pipeline entlang weitergereicht wird, ist -OutVariable.
    Get-Service -OutVariable A | 
        Where-Object -Property Status -Value Running -EQ -OutVariable B | 
        Where-Object -Property StartType -Value Manual -EQ -OutVariable C | 
        Where-Object -Property CanShutdown -Value true -EQ -OutVariable D |
        Format-Table -AutoSize -OutVariable E
    Jetzt kannst Du Dir mit:
    $A
    
    $B
    
    $C
    
    $D
    
    $E
     nacheinander ansehen, was im jeweiligen Schritt der Pipeline angekommen ist. Find ich coool  ;-)

    Grüße - Best regards

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


    • Bearbeitet BOfH-666 Dienstag, 20. Dezember 2016 21:35
    • Als Antwort markiert -- Chris -- Mittwoch, 21. Dezember 2016 09:52
    Dienstag, 20. Dezember 2016 21:34
  • > PS-TEST>*Get-Process | group {$_.name} | where {$_.count -gt 1}*
    > liefert 8 Zeilen
     
    Ja - hier bekommst Du ja gruppierte Objekte.
     
    > PS-TEST> *Get-Process | group {$_.name} | where {$_.count -gt 1}| select -ExpandProper*
    > aus den 8 Zeilen werden wieder zig Zeilen
     
    Da werden die Gruppen wieder aufgelöst.
     
    • Als Antwort markiert -- Chris -- Mittwoch, 21. Dezember 2016 09:52
    Mittwoch, 21. Dezember 2016 09:51

Alle Antworten

  • Moin,

    nein, hinter

     | where { <Bedingung> } | 

    sind nur Objekte zu finden, bei denen die Bedingung zutrifft.


    Evgenij Smirnov

    I work @ msg services ag, Berlin -> http://www.msg-services.de
    I blog (in German) @ http://it-pro-berlin.de
    my stuff in PSGallery --> https://www.powershellgallery.com/profiles/it-pro-berlin.de/
    Exchange User Group, Berlin -> http://exusg.de
    Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
    Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com

    • Als Antwort vorgeschlagen BOfH-666 Dienstag, 20. Dezember 2016 19:40
    • Als Antwort markiert -- Chris -- Mittwoch, 21. Dezember 2016 09:53
    Dienstag, 20. Dezember 2016 19:38
  • Nein,

    wenn du pipst gibst du diese Objekte mit den jeweiligen(selektierten) Properties weiter.

    Vielleicht hattest du die Daten in einer Variable gruppiert und hattest diese später abgefragt?

    $gruppe=get-service
    
    $gruppe|Where-Object {$_.status -eq 'Running'}
    $gruppe

    Dann gibt deine where-Abfrage die laufenden Prozesse aus.

    Die Variable $gruppe beinhaltet aber alle Prozesse




    Bis dann, Toni! Wenn Dir meine Antwort hilft dann markiere sie bitte als Antwort! Vielen Dank!



    • Bearbeitet tonibert Dienstag, 20. Dezember 2016 19:47
    • Als Antwort vorgeschlagen tonibert Dienstag, 20. Dezember 2016 19:49
    • Als Antwort markiert -- Chris -- Mittwoch, 21. Dezember 2016 09:53
    Dienstag, 20. Dezember 2016 19:46
  • Eine großartige Möglichkeit, sich anzusehen, was die Pipeline entlang weitergereicht wird, ist -OutVariable.
    Get-Service -OutVariable A | 
        Where-Object -Property Status -Value Running -EQ -OutVariable B | 
        Where-Object -Property StartType -Value Manual -EQ -OutVariable C | 
        Where-Object -Property CanShutdown -Value true -EQ -OutVariable D |
        Format-Table -AutoSize -OutVariable E
    Jetzt kannst Du Dir mit:
    $A
    
    $B
    
    $C
    
    $D
    
    $E
     nacheinander ansehen, was im jeweiligen Schritt der Pipeline angekommen ist. Find ich coool  ;-)

    Grüße - Best regards

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


    • Bearbeitet BOfH-666 Dienstag, 20. Dezember 2016 21:35
    • Als Antwort markiert -- Chris -- Mittwoch, 21. Dezember 2016 09:52
    Dienstag, 20. Dezember 2016 21:34
  • nicht ganz,

    wie gesagt wenn man neu ist stellt man sich das auch genau so vor.

    Get-Process | group {$_.name} | where {$_.count -gt 1}| select -ExpandProperty Group
    nach dem WHERE sind laut euch weniger Daten da. Wäre ja logisch so. Trotzdem erhält man bei dem nachfolgenden Pipe mehr Daten als mit where exportiert werden.


    Chris


    • Bearbeitet -- Chris -- Mittwoch, 21. Dezember 2016 08:49
    Mittwoch, 21. Dezember 2016 08:47
  • Theorie stimmt leider nicht ganz

    PS-TEST> Get-Process | group {$_.name} | where {$_.count -gt 1}

    liefert 8 Zeilen

    Count Name                      Group
    ----- ----                      -----
        2 ccSvcHst                  {System.Diagnostics.Process (ccSvcHst), System.Diagno
        3 conhost                   {System.Diagnostics.Process (conhost), System.Diagnos
        2 csrss                     {System.Diagnostics.Process (csrss), System.Diagnosti
        6 iexplore                  {System.Diagnostics.Process (iexplore), System.Diagno
        2 powershell                {System.Diagnostics.Process (powershell), System.Diag
        3 RAVBg64                   {System.Diagnostics.Process (RAVBg64), System.Diagnos
       20 svchost                   {System.Diagnostics.Process (svchost), System.Diagnos
        2 taskhostw                 {System.Diagnostics.Process (taskhostw), System.Diagn

    PS-TEST> Get-Process | group {$_.name} | where {$_.count -gt 1}| select -ExpandProper

    aus den 8 Zeilen werden wieder zig Zeilen

    Handles  NPM(K)    PM(K)      WS(K)     CPU(s)     Id  SI ProcessName
    -------  ------    -----      -----     ------     --  -- -----------
       2152     102    71504      22728              2724   0 ccSvcHst
        376      30     5572       4656      38,28   2764   1 ccSvcHst
        159      12     3772      13332       0,47   4428   1 conhost
         80       8     5348        132       0,02   7932   1 conhost
        162      12     6132      12544       0,53  12188   1 conhost
        525      15     1496       1568               572   0 csrss
        684      26     2336       7860               684   1 csrss
        704      51    19456      49072      19,13   2172   1 iexplore
        925     117   108528      87064       9,52   2756   1 iexplore
       1075     209   227628     181524     238,11   3404   1 iexplore
       1239     366   279276     242364      69,23   7396   1 iexplore
        819     110    88824     118320      57,28   9592   1 iexplore
        873     107    98240      92844       9,19  11828   1 iexplore
        599      30    63948      74008       1,00   2644   1 powershell
       1155      91   147260      99512       5,78   6692   1 powershell
        265      14     5968       1240              2360   1 RAVBg64
        300      16     6384       1256              2380   1 RAVBg64


    Chris

    Mittwoch, 21. Dezember 2016 08:58
  • > PS-TEST>*Get-Process | group {$_.name} | where {$_.count -gt 1}*
    > liefert 8 Zeilen
     
    Ja - hier bekommst Du ja gruppierte Objekte.
     
    > PS-TEST> *Get-Process | group {$_.name} | where {$_.count -gt 1}| select -ExpandProper*
    > aus den 8 Zeilen werden wieder zig Zeilen
     
    Da werden die Gruppen wieder aufgelöst.
     
    • Als Antwort markiert -- Chris -- Mittwoch, 21. Dezember 2016 09:52
    Mittwoch, 21. Dezember 2016 09:51