gpt4 book ai didi

arrays - 查找 array1 中但不在 array2 中的项目

转载 作者:行者123 更新时间:2023-12-02 05:58:35 25 4
gpt4 key购买 nike

我从两个不同的工具 Array1Array2 中提取了两个计算机列表。

现在我需要提取 Array1 中的内容,但不在 Array2 中的内容。

我通过这样做设法获得了所有匹配的:

$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

但我仍然需要 $SCCMcomputer 中但不在 $eWPTcomputers 中的那些...

我在其他语言(例如 Perl)上找到了一些解决方案,但不适用于 PowerShell。

更新

我仍然没有在 Excel 中使用以下公式得到正确的输出:

enter image description here

输出如下:

enter image description here

表示有些在这里,有些不在这里。 powershell中的输出是这样的

enter image description here

表示 0KB 为空。

$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

SCCMcomptuers/eWPTcomputers 中的列名称(或名称)都是“Computername”

知道我可能做错了什么吗?两个计算机数组都是从 SQL 和哈希表中生成的(我认为它被称为):@{Computername=......}@{Computername....,类似这样。

更新2

foreach ($t in $sccmComputers) {
$Test1 += $t.computername
}

$Test2 = @()
foreach ($t in $ewptComputers) {
$Test2 += $t.computername
}

通过删除哈希表的 header 并仅让数组充满字符串,效果太棒了......甚至 -Property computername 也不起作用......:S

最佳答案

使用compare-object cmdlet

Compare-Object -ReferenceObject $sccm -DifferenceObject $wpt | ?{$_.sideIndicator -eq "<="} |select inputobject

示例:

$sccm=@(1,2,3)   
$wpt=@(2,4)

Compare-Object -ReferenceObject $sccm -DifferenceObject $wpt -IncludeEqual

将输出:

InputObject SideIndicator


      2 ==            
4 =>
1 <=
3 <=

这意味着值“2”在两个对象上,“1”和“3”仅在“左侧”(即引用对象)上,而“4”仅在差异对象上

关于arrays - 查找 array1 中但不在 array2 中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25244522/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com