gpt4 book ai didi

powershell - PowerShell:比较存储在数组中的对象结果不相等

转载 作者:行者123 更新时间:2023-12-02 23:14:38 25 4
gpt4 key购买 nike

在下面的代码示例中,将原始对象与其在数组中存储的副本进行比较会导致状态不相等。我想了解这种现象为什么它们不相等:

$MyArray=@()
$MyCFG="" | Select-Object -Property ProjName,ProCFG

$MyCFG.ProjName="p1"
$MyCFG.ProCFG="c1"
$MyArray+=$MyCFG.PsObject.Copy()

$MyCFG.ProjName="p2"
$MyCFG.ProCFG="c2"
$MyArray+=$MyCFG.PsObject.Copy()

$MyCFG.ProjName="p3"
$MyCFG.ProCFG="c3"
$MyArray+=$MyCFG.PsObject.Copy()


ForEach($obj in $MyArray)
{
if ($MyCFG -eq $obj)
{Write-Host "Equal"}
else
{Write-Host "Unequal"}

}

最后的对象值,即$ MyCFG.ProjName =“p3”和$ MyCFG.ProCFG =“c3”应该与$ MyArray中存储的值相同,但它们也会导致不相等。

虽然,它可以通过比较其属性值来正确比较,即:
if (($MyCFG.ProjName -eq $obj.ProjName) -and ($MyCFG.ProCFG -eq $obj.ProCFG))

但想知道为什么对象比较结果不相等...

最佳答案

您可以通过这种方式使用compare-object

ForEach($obj in $MyArray)
{
if (compare-object $obj $mycfg -Property Projname,procfg)
{Write-Host "Unequal"}
else
{Write-Host "Equal"}
}

比较您需要的 properties(在本例中都是)并测试是否存在差异。

关于powershell - PowerShell:比较存储在数组中的对象结果不相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18873143/

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