We can merge hashtables and perform some operations on merged hashtable
```sh
#Function is used to merge hashtables.
function Merge-Hashtables([ScriptBlock]$Operator) {
$Output = @{}
ForEach ($hashtable in $input) {
If ($Hashtable -is [Hashtable]) {
ForEach ($key in $hashtable.Keys) {$Output.$key = If ($Output.ContainsKey($key)) {@($Output.$key) + $hashtable.$key} Else {$hashtable.$key}}
}
}
If ($Operator) {ForEach ($Key in @($Output.Keys)) {$_ = @($Output.$Key); $Output.$Key = Invoke-Command $Operator}}
$Output
}
# Usage
$hash1 = @{ Number = 1; Shape = "Rectangle"; Color = "Blue"}
$hash2 = @{ Number = 2; Shape = "Square"; Color ="Red"}
$hash3 = @{ Number = 3; Shape = "Circle"; Color ="Green"}
```
### Example-1
``` sh
$hash1,$hash2,$hash3 | Merge-Hashtables
#Result
Name Value
Color {Blue, Red, Green}
Shape {Rectangle, Square, Circle}
Number {1, 2, 3}
```
### Example-2
``` sh
$hash1,$hash2,$hash3 |Merge-Hashtables {$_ -join ","}
#Result
Name Value
---- -----
Color Blue,Red,Green
Shape Rectangle,Square,Circle
Number 1,2,3
```
### Example-3
```sh
$hash1,$hash2,$hash3 | Merge-Hashtables {$_ | Sort-Object}
#Result
Name Value
---- -----
Color {Blue, Green, Red}
Shape {Circle, Rectangle, Square}
Number {1, 2, 3}
```
### Example-4
```sh
$hash1,$hash2,$hash3 | Merge-Hashtables {$_ | Select -First 1}
#Result
Name Value
---- -----
Color Blue
Shape Rectangle
Number 1
```
### Example-5
```sh
$hash1,$hash2,$hash3 | Merge-Hashtables { $_ | Select -First 2}
#Result
Name Value
---- -----
Color {Blue, Red}
Shape {Rectangle, Square}
Number {1, 2}
```
Azure Cloud Solution Architect, Full-Stack Development in .Net Eco system, Senior Manager at Capgemini
Thursday, July 27, 2023
Merge Hashtables in Powershell
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment