2016-07-15 9 views
0

Derzeit ich eine benutzerdefinierte Liste haben, die wie folgt aussieht:Powershell - Die Kombination von Linien in benutzerdefinierten Objekten

ItemPath ItemName LineNumber Indicator Text 
-------- -------- ---------- ---------- ------------ 
C:\  Test.txt 10   Reference Hello World! 
C:\  Test.txt 10   Difference Hell0 W0rld! 

ich die Liste sortieren möchten oder neu organisieren wie folgt aussehen: Ich Grundsätzlich

ItemPath ItemName LineNumber DiffText  RefText 
-------- -------- ---------- ------------ ------------ 
C:\  Test.txt 10   Hello World! Hell0 W0rld!  

Sie möchten, dass die Zeilen mit der Zeilennummer mit dem Wert "text" verknüpft werden, der auf "Indikator" basiert. Ich habe kein Glück, das herauszufinden.

+0

Wie haben Sie erzeugen/produzieren die Liste in erster Linie? –

+0

Hallo! Ich habe die Ausgabe vom Cmdlet Compare-Object erhalten. – TroggleDorf

+0

Also das Objekt heißt allComparisons und ich habe es als Teil eines größeren Programms erstellt, aber die relevanten Befehle sind: $ NewItem = @ {"ItemPath" = $ ProdPath; "ItemName" = $ ProdName; "Indikator" = $ FormatedIndicator; "LineNumber" = $ comparison.InputObject.ReadCount; "TextString" = $ comparison.InputObject} $ Global: allComparison + = New-Objekt pscustomobject -Property $ NewItem – TroggleDorf

Antwort

1

Verwenden Group-Object zu gruppieren Sie die Objekte durch Pfad, Name und die Zeilennummer, kombinieren dann die Paare in einer einzelnen Objekte:

$pairs = $allComparisons |Group-Object -Property ItemPath,ItemName,LineNumber |ForEach-Object { 

    # Grab the two objects in the group 
    $Difference,$Reference = $_.Group |Sort-Object Indicator 

    # Create a new object with Text properties from each 
    New-Object psobject -Property $([ordered]@{ 
     ItemPath = $Reference.ItemPath 
     ItemName = $Reference.ItemName 
     LineNumber = $Reference.LineNumber 
     DiffText = $Difference.Text 
     RefText = $Reference.Text 
    }) 
} 
+0

Vielen Dank! Lass mich das ausprobieren! – TroggleDorf

+0

Das hat mir wirklich geholfen! Vielen Dank! – TroggleDorf

Verwandte Themen