5

我有一个数组对象 $a ,它返回如下所示的输出。

假设 $a 返回这个

通过 $a[0].Name 我可以访问每个“名称”条目,$a[0].Available 我可以访问其相应的可用空间。

我有另一个数组说 $b 包含一些名称,说 $b 返回两个名称“sandeep_aggr1”和“aggr4”。这只是一个数组(没有 Name、Avaiable 等属性),不是对象,因此不能使用 Compare-Object。

我想删除原始对象 $a 中的其他条目,但“名称”等于“sandeep_aggr1”和“aggr4”的条目除外。

这就是我正在做的事情。

foreach($bb in $b)
    {
          foreach($aa in $a)
          {
                if($aa.Name -ne $bb)
                {
                   $aa.Remove($aa.Name)
                }

          }


    }

    echo $a

但是,我没有看到删除的元素,我在这里遗漏了什么吗?任何帮助表示赞赏

4

2 回答 2

9

如果我正确阅读了这个问题,这应该有效:

$a = $a | where {$b -contains $_.Name}
于 2013-04-03T18:15:13.163 回答
1

我遇到了同样的问题,如果 $a 变成只有一个元素的数组,它就不起作用了。Powershell 放弃了 $a 是一个数组的事实。这是非常有问题的,因为我之后使用了 JSON 转换。

我刚刚添加了一个演员表:

$a = [array]($a | where {$b -contains $_.Name})
于 2015-07-23T14:30:15.663 回答