我有一个数组对象$ a,它返回如下所示的输出。
通过执行$ a [0] .Name我可以访问每个“Name”条目,$ a [0]。可以访问其相应的可用空间。
我有另一个数组说$ b包含一些名字,比如说$ b给我两个名字“sandeep_aggr1”和“aggr4”。这只是一个数组(没有Name,Avaiable等属性),不是对象,所以它不能使用Compare-Object。
我想删除原始对象$ a中的其他条目,但“Name”等于“sandeep_aggr1”和“aggr4”的条目除外。
这就是我在做的事。
foreach($bb in $b)
{
foreach($aa in $a)
{
if($aa.Name -ne $bb)
{
$aa.Remove($aa.Name)
}
}
}
echo $a
但是,我没有看到删除的元素,我在这里遗漏了什么? 任何帮助表示赞赏
答案 0 :(得分:9)
如果我正确地阅读了这个问题,这应该有效:
$a = $a | where {$b -contains $_.Name}
答案 1 :(得分:1)
我遇到了同样的问题,如果$ a成为只有一个元素的数组,它就无法工作。 Powershell松散了$ a是一个数组的事实。这是非常有问题的,因为我之后使用了JSON转换。
我刚刚添加了一个演员:
$a = [array]($a | where {$b -contains $_.Name})