Encuentra elementos que están en array1 pero NO en array2
Extraje dos listas de computadoras de dos herramientas diferentes,Array1
yArray2
.
Ahora necesito extraer los que están enArray1
, pero no enArray2
.
Logré obtener todos los que coinciden haciendo esto:
$matchingComp = @()
foreach ($SCCMcomputer in $SCCMcomputers) {
foreach ($eWPTcomputer in $eWPTcomputers) {
if ($SCCMcomputer.Computername -eq $eWPTComputer.Computername) {
$obj = New-Object PSObject
$obj | Add-Member -MemberType NoteProperty -Name "ComputerName" -Value $SCCMcomputer.Computername
$matchingComp +=$obj
}
}
}
$matchingComp | Export-Csv $inEWPT -Delimiter "," -NoTypeInformation
Pero todavía necesito los que están en$SCCMcomputer
pero NO en$eWPTcomputers
...
He encontrado algunas soluciones en SO con otros idiomas (por ejemplo, Perl) pero no para PowerShell.
ACTUALIZAR
Todavía no obtengo el resultado correcto, en Excel con esta fórmula:
la salida se ve así:
significa que algunos están aquí, otros no. La salida en powershell es así
significa que 0 KB es vacío.
$SCCMcomputers | Export-Csv $sccmexport -Delimiter "," -NoTypeInformation
$eWPTcomputers | Export-Csv $ewptexport -Delimiter "," -NoTypeInformation
Compare-Object -ReferenceObject $SCCMcomputers -DifferenceObject $eWPTcomputers | ?{$_.sideIndicator -eq "=>"} |select inputobject | Export-Csv $inEWPT -NoTypeInformation
Compare-Object -ReferenceObject $SCCMcomputers -DifferenceObject $eWPTcomputers | ?{$_.sideIndicator -eq "=="} |select inputobject | Export-Csv $inBoth -NoTypeInformation
Compare-Object -ReferenceObject $SCCMcomputers -DifferenceObject $eWPTcomputers | ?{$_.sideIndicator -eq "<="} |select inputobject | Export-Csv $inSCCM -NoTypeInformation
Y ambos Nombre de columna (o como se llama) de SCCMcomptuers / eWPTcomputers es "Computername"
¿Alguna idea de lo que podría estar haciendo mal? Ambas matrices de computadora se generan a partir de SQL y en tablas hash (creo que se llama):@{Computername=......}@{Computername....
, algo como esto.
Actualización 2
foreach ($t in $sccmComputers) {
$Test1 += $t.computername
}
$Test2 = @()
foreach ($t in $ewptComputers) {
$Test2 += $t.computername
}
Al eliminar el Encabezado de la tabla hash y simplemente tener matrices llenas de cadenas, funciona fantástico ... incluso-Property computername
no funcionó ...: S