Encontre itens que estão no array1, mas NÃO no array2
Extraí duas listas de computadores de duas ferramentas diferentes,Array1
eArray2
.
Agora eu preciso extrair os que estão emArray1
, mas não emArray2
.
Consegui obter todos os correspondentes, fazendo o seguinte:
$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
Mas eu ainda preciso dos que estão em$SCCMcomputer
mas NÃO em$eWPTcomputers
...
Encontrei algumas soluções no SO com outros idiomas (por exemplo, Perl), mas não no PowerShell.
ATUALIZAR
Ainda não recebo a saída correta, no Excel com esta fórmula:
a saída se parece com:
significa que alguns estão aqui, outros não. A saída no PowerShell é assim
significa que 0 KB está vazio.
$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
E o nome da coluna (ou como é chamado) do SCCMcomptuers / eWPTcomputers é "Computername"
Alguma idéia do que eu poderia estar fazendo de errado? Ambas as matrizes de computador são geradas a partir do SQL e em hashtables (acho que se chama):@{Computername=......}@{Computername....
, algo assim.
Atualização 2
foreach ($t in $sccmComputers) {
$Test1 += $t.computername
}
$Test2 = @()
foreach ($t in $ewptComputers) {
$Test2 += $t.computername
}
Removendo o cabeçalho do Hashtable e apenas ter matrizes cheias de strings funciona fantástico ...-Property computername
não funcionou ...: S