【发布时间】:2019-04-06 23:13:32
【问题描述】:
我有两个自定义对象数组 - $deploy 和 $directory。它们有 4 个共同的属性和 1 个独特的属性。我需要找到两个数组中 4 个公共属性相同的成员,但我还需要跟踪匹配项的 2 个唯一属性。
在具有定义相同属性的两个数组上使用 compare-object,-passthru 和 -includeequal 几乎是这样,但只给了我第一个(引用)对象及其唯一属性,而不是差异对象上的唯一属性。
所以我不能简单地比较两个数组并得到我需要的东西。我要么需要做一个嵌套循环,要么破解/找到某种“设置交集”功能。我只会处理每个数组的几十个成员,所以我不太关心性能。
你会采取什么方法?对于下面的简单示例,我希望跟踪所有匹配项的环境名称和部署目录。
$deploy
GameBuildVersion : 68858.zip
OnlineVersion : 70793.zip
ContentVersion : 68858.69165-1.zip
ContentBuildVersion : 69165-1.zip
environmentname : Staging35
$directory
GameBuildVersion : 68858.zip
OnlineVersion : 70793.zip
ContentVersion : 68858.69165-1.zip
ContentBuildVersion : 69165-1.zip
deploymentDirectory : C:\deployer\script\deploy-AB
【问题讨论】:
-
看看这个的
full join部分...在PowerShell中合并数据——漫无目的的饼干怪物——ramblingcookiemonster.github.io/Join-Object -
试试
Join-Object:$deploy | FullJoin $directory GameBuildVersion, OnlineVersion, ContentVersion, ContentBuildVersion -
@Lee_Dailey - 该函数仅适用于每个对象的单个属性,不幸的是,我需要对 *version 属性进行全 4 匹配。
-
@mfinni - 啊!我把
full join部分按要求做了。重读显然是不正确的。感谢您指出这一点! [咧嘴]
标签: arrays powershell compare set-intersection