none
Group-Object gibt System.Collections.ObjectModel.Collection`1[System.Management.Automation.PSObject] aus RRS feed

  • Frage

  • Hallo zusammen,

    ich lese einen Datensatz aus der Datenbank aus.:

    $command = $connection.CreateCommand()
    $command.CommandText = $query
    
    $result = $command.ExecuteReader()
    $table = new-object “System.Data.DataTable”
    $table.Load($result)
    
    #########
    
    $table |  Group-Object Gruppenname 

    beim Gruppieren bekomme ich dann:

    Count Name                      Group                                                                                                                                               
    ----- ----                      -----                                                                                                                                                        
        7 Gruppe                 ... {System.Data.DataRow, System.Data.DataRow, System.Data.DataRow, System.Data.DataRow...}  

    Mein Ziel ist es jedoch die Daten auf zu listen die sich in der Gruppe befinden.

    Hat jemand eine Idee für mich?

    Mittwoch, 25. Januar 2017 13:45

Antworten

  • Hmmmm ... ich glaube das hängt ziemlich stark von Deinen Daten ab. Vielleicht ist ja auch Group-Object nicht so ganz das richtige Cmdlet für Dich und Du brauchst eigentlich was ganz Anderes.

    Nur zur Demo:

    Get-Process  | Select-Object -Property ProcessName,MainWindowTitle | Group-Object -Property ProcessName
    Sieht das denn so aus, wie Du es erwarten würdest?


    Grüße - Best regards

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

    Mittwoch, 25. Januar 2017 19:22

Alle Antworten

  • Select-Object -ExpandProperty sollte die Lösung sein, oder?  Mit Group-Object fasst Du Sachen eher zusammen.

    Grüße - Best regards

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

    Mittwoch, 25. Januar 2017 13:51
  • Es geht ja ums zusammenfassen. 

    Count Name                      Group                                                                                                                                                        
    ----- ----                      -----                                                                                                                                                        
        7 Gruppe           ... {System.Data.DataRow, System.Data.DataRow, System.Data.DataRow, System.Data.DataRow...}                                                                      
        5 Gruppe2         ... {System.Data.DataRow, System.Data.DataRow, System.Data.DataRow, System.Data.DataRow...}                                                                      
        1 Gruppe3         ... {System.Data.DataRow}  

    Mittwoch, 25. Januar 2017 14:07
  • Dann hab ich das missverstanden. Ich dachte, Du wolltest die Daten auflisten und nicht zusammenfassen.

    Grüße - Best regards

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

    Mittwoch, 25. Januar 2017 14:42
  • gibt es eventuell noch eine andere Möglichkeit wie:

    foreach Gruppe get Names als Table

    Gruppe        Name1, Name2, Name3

    Mittwoch, 25. Januar 2017 15:41
  • Hmmmm ... ich glaube das hängt ziemlich stark von Deinen Daten ab. Vielleicht ist ja auch Group-Object nicht so ganz das richtige Cmdlet für Dich und Du brauchst eigentlich was ganz Anderes.

    Nur zur Demo:

    Get-Process  | Select-Object -Property ProcessName,MainWindowTitle | Group-Object -Property ProcessName
    Sieht das denn so aus, wie Du es erwarten würdest?


    Grüße - Best regards

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

    Mittwoch, 25. Januar 2017 19:22
  • Count Name                      Group                                                                                                                                                        
    ----- ----                      -----                                                                                                                                                        
        1 acrotray                  {@{ProcessName=acrotray; MainWindowTitle=}}                                                                                                                  
        1 Adobe CEF Helper          {@{ProcessName=Adobe CEF Helper; MainWindowTitle=}}                                                                                                          
        1 Adobe Desktop Service     {@{ProcessName=Adobe Desktop Service; MainWindowTitle=}}                                                                                                     
        1 AdobeIPCBroker            {@{ProcessName=AdobeIPCBroker; MainWindowTitle=}}                        


    Count Name                      Group                                                                                                                                                        
    ----- ----                      -----                                                                                                                                                        
        7 Gruppe                   ... {System.Data.DataRow, System.Data.DataRow, System.Data.DataRow, System.Data.DataRow...}                                                                      
        5 Gruppe2                 ... {System.Data.DataRow, System.Data.DataRow, System.Data.DataRow, System.Data.DataRow...}                                                                      
        1 Gruppe3                 ... {System.Data.DataRow}    

    Das ist das Problem, ich bekomme keine Daten die in dem Objekt sind.

    $groups = @{}
    $groups = $table | Group Gruppe, Name
    $groups | foreach {
    
        [pscustomobject] @{
            Gruppe = $_.Group | select -Unique -ExpandProperty Gruppe
            Name = $_.Group | select -Unique -ExpandProperty Name
            #"Sum Value" = ($_.Group | Measure-Object value)
        
      }
    
    }

    Ich bräuchte eine Schleife die ein Objekt ausgibt das so aussieht:

    Count  Gruppe         Namen
    -----  ------         ------
    7      Gruppe1        Name1, Name2, Name3


    Donnerstag, 26. Januar 2017 07:02
  • $grp = $table | group Gruppe | Select-Object Count, Name,  @{L="User";E={($table | Where-Object Gruppe -EQ $_.NAME)}}

    Das bringt mich ein Stück weiter, jedoch wieder mit dem Problem: System.Data.DataRow

    Count Name                                                                                                 User                                                                         
    ----- ----                                                                                                 ---------                                                                         
        7 Gruppe                                                                                          {System.Data.DataRow, System.Data.DataRow, System.Data.DataRow, System.Data.Dat...
        5 Gruppe2                                                                                        {System.Data.DataRow, System.Data.DataRow, System.Data.DataRow, System.Data.Dat...
        1 Gruppe3                                                                                         System.Data.DataRow                                                               


    Donnerstag, 26. Januar 2017 10:22
  • Icke, brauchst du hier noch Hilfe?

      


    Blog: http://bytecookie.wordpress.com

    Neu: Powershell Code Manager v5 ! Link
    (Schneller, besser + komfortabler scripten.)

    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.




    Dienstag, 31. Januar 2017 15:03
    Moderator
  • Ja, auch im allgemeinen zu den Obejkten, wie man solche befüllt. Eventuell hat noch jemand einen Link oder ne Idee wie man das am besten lernen kann.
    Donnerstag, 16. Februar 2017 15:41