【发布时间】:2018-12-19 11:53:52
【问题描述】:
我有一个名为 $restoreItems 的对象,我想过滤重复的属性值并选择最新的。
请先看看它的成员,以了解我在做什么:
为了能够检查重复项,我需要“DirName”+“LeafName”属性的组合,因为这种组合构建了一个完整的文件路径。
这是我的第一个问题。我无法组合这两个属性并将其添加到该对象。我尝试像这样添加一个新成员:
$restoreItems | Add-Member -NotePropertyName fullPath -NotePropertyValue
($restoreItems.Dirname + '/' + $restoreItems.LeafName)
此命令运行良好,但在调用时
$restoreItems.fullPath
我收到一条错误消息,指出 “数组尺寸超出了支持的范围。”
还有其他方法可以将 $restoreItems.Dirname + '/' + $restoreItems.LeafName 添加到对象吗?如果是这样,我可能会找到一种方法来根据它们的 DeletedDate 属性排除重复项。
感谢您的帮助。
编辑:这是对象的 .GetType():
【问题讨论】:
-
你从
$restoreItems.GetType()得到什么?请使用此信息编辑您的问题。 -
$restoreItems是一个集合吗?$restoreItems.Count。我认为您需要将这些属性添加到集合的每个单独对象中。不是整个系列。$restoreItems | %{Add-Member -NotePropertyName fullPath -NotePropertyValue ($_.Dirname + '/' + $.LeafName)}。话虽如此,您不需要添加该属性,您也可以将该逻辑与Compare-Object之类的东西一起使用。 -
@EBGreen:我添加了 for .GetType() 的屏幕截图。但是,在我尝试添加成员之前,它看起来是一样的。
-
@Matt:我将尝试为 ForEach-Object 添加各个属性。当您建议可以使用 Compare-Object 实现我的逻辑时,我是否必须为 .DirName + .LeafName 创建一个计算属性才能比较 .DeletedDate?
-
所以,是的,我以为这是一个我只想检查的数组。 Ansgar Wiechers 的回答应该可以解决。
标签: arrays powershell properties