Um die beiden Objekte $object1 und $object2 in einem gemeinsamen Objekt $objects zu speichern, hängt es davon ab, ob man die Daten vertikal oder horizontal zusammenfügen möchte. (JOINING & CONCATENING)

Concatening / Union / vertikal

Um Objekte – vergleichbar mit einem Union zusammenzufügen, gibt es die Möglichkeit unter Verwendung des Operator ,:

Der Operator , erzeugt in diesem Fall ein Array, das beide Objekte enthält. Die Variable $objects wird dann diesem Array zugewiesen, so dass sie beide Objekte enthält.

# Erstes Objekt
$object1 = New-Object PSObject -Property @{
Name = "John"
Age = 30
}
# Zweites Objekt
$object2 = New-Object PSObject -Property @{
Name = "John2"
Age = 39
}
# Objekte zusammenführen
$objects = $object1, $object2
# Ausgabe
$objects

Joining / Join / Horizontal

Etwas komplizierter ist das Joining von Daten in Powershell.

# JSON-Daten
$myJSON1 = '[
{
"Name": "John",
"Age": 30
},
{
"Name": "John2",
"Age": 39
}
]'
# JSON-Daten
$myJSON2 = '[
{
"Name": "John",
"City": "New York"
},
{
"Name": "John2",
"City": "Graz"
}
]'
# PowerShell-Objekte erstellen
$myObject1 = ConvertFrom-Json $myJSON1
$myObject2 = ConvertFrom-Json $myJSON2
# INNER JOIN-Operation ausführen
$result = $myObject1 | ForEach-Object {
$name = $_.Name
$match = $myObject2 | Where-Object { $_.Name -eq $name }
if ($match) {
[pscustomobject] @{
Name = $name
Age = $_.Age
City = $match.City
}
}
}
# Ausgabe
$result

In diesem Beispiel wird die JSON-Textzeichenfolge in der Variable $myJSON1 und $myJSON2 definiert. Die JSON-Textzeichenfolgen werden dann durch das ConvertFrom-Json Cmdlet in PowerShell-Objekte $myObject1 und $myObject2 umgewandelt.

Die ForEach-Object-Schleife wird dann verwendet, um jedes Objekt in $myObject1 zu durchlaufen. Innerhalb dieser Schleife wird das Where-Object Cmdlet verwendet, um jedes Objekt in $myObject2 zu durchlaufen, das denselben Namen hat wie das aktuelle Objekt in $myObject1.

Wenn ein passendes Objekt gefunden wurde, wird ein neues Objekt erstellt, das alle Eigenschaften aus beiden ursprünglichen Objekten enthält. Das neue Objekt wird der Ergebnisliste $result hinzugefügt.

Die Ausgabe des Ergebnisses sieht folgendermaßen aus: