gpt4 book ai didi

powershell - 从集合中删除项目的推荐方法是什么?

转载 作者:行者123 更新时间:2023-12-04 01:55:40 24 4
gpt4 key购买 nike

我经常需要根据某些条件从集合中删除一些对象,每次我都这样做:

Get-SomeCollection | ? { $_.SomeProperty -eq "SomeValue" } | % { $_.Delete() }

但这只会删除第一个元素,然后抛出异常“集合已修改...bla bla ...”。我明白了异常(exception)的要点,但是推荐的做法是什么?

我通常使用一些数组 itemsToDelete 然后我再次遍历该数组并执行删除操作:

$itemsToDelete = @()
Get-SomeCollection | ? { $_.SomeProperty -eq "SomeValue" } | % { $itemsToDelete += $_ }
$itemsToDelete | % { $_.Delete() }

我想知道这是否足够好或者更好的方法是什么。

最佳答案

您通常会做的是使用过滤器从集合中实际过滤 项目。因此,您无需修改​​原始集合,而只是过滤掉您感兴趣的集合。

Get-SomeCollection | ? { $_.SomeProperty -ne "SomeValue" }

如果您需要对要删除的项目调用操作,您只需创建过滤集合的副本并枚举该集合即可。这样做非常简单,因为您只需要将表达式括在括号中,以便在使用以下命令运行枚举之前对其求值:

 (Get-SomeCollection | ? { $_.SomeProperty -eq "SomeValue" }) | % { $_.Delete() }

关于powershell - 从集合中删除项目的推荐方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12457625/

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