Comparando dos matrices y obteniendo los valores que no son comunes

Quería una pequeña lógica para comparar el contenido de dos matrices y obtener el valor que no es común entre ellos utilizando powershell

ejemplo si

$a1=@(1,2,3,4,5) $b1=@(1,2,3,4,5,6) 

$ c, que es la salida, debería darme el valor ” 6 “, que es la salida de lo que es el valor poco común entre ambas matrices.

¿Puede alguien ayudarme con lo mismo? ¡Gracias!

 PS > $c = Compare-Object -ReferenceObject (1..5) -DifferenceObject (1..6) -PassThru PS > $c 6 

enter image description here

 $a = 1,2,3,4,5 $b = 4,5,6,7,8 

$Yellow = $a | Where {$b -NotContains $_}

$Yellow contiene todos los artículos en $a excepto los que están en $b :

 PS C:\> $Yellow 1 2 3 

$Blue = $b | Where {$a -NotContains $_}

$Blue contiene todos los artículos en $b excepto los que están en $a :

 PS C:\> $Blue 6 7 8 

$Green = $a | Where {$b -Contains $_}

No en cuestión, pero de todos modos; Green contiene los elementos que están en $a y $b .

 PS C:\> $Green 4 5 

Mire Compare-Object

 Compare-Object $a1 $b1 | ForEach-Object { $_.InputObject } 

O si desea saber a dónde pertenece el objeto, mire a SideIndicator:

 $a1=@(1,2,3,4,5,8) $b1=@(1,2,3,4,5,6) Compare-Object $a1 $b1 

Sus resultados no serán útiles a menos que los arrays primero se clasifiquen. Para ordenar una matriz, ejecútela a través de Sort-Object.

 $x = @(5,1,4,2,3) $y = @(2,4,6,1,3,5) Compare-Object -ReferenceObject ($x | Sort-Object) -DifferenceObject ($y | Sort-Object) 

Tratar:

 $a1=@(1,2,3,4,5) $b1=@(1,2,3,4,5,6) (Compare-Object $a1 $b1).InputObject 

O bien, puedes usar:

 (Compare-Object $b1 $a1).InputObject 

El orden no importa.

Esto debería ayudar, utiliza una tabla hash simple.

 $a1=@(1,2,3,4,5) $b1=@(1,2,3,4,5,6) $hash= @{} #storing elements of $a1 in hash foreach ($i in $a1) {$hash.Add($i, "present")} #define blank array $c $c = @() #adding uncommon ones in second array to $c and removing common ones from hash foreach($j in $b1) { if(!$hash.ContainsKey($j)){$c = $c+$j} else {hash.Remove($j)} } #now hash is left with uncommon ones in first array, so add them to $c foreach($k in $hash.keys) { $c = $c + $k }