【问题标题】:Removing an item from a array of objects in Powershell从 Powershell 中的对象数组中删除项目
【发布时间】:2013-04-03 17:57:24
【问题描述】:

我有一个数组对象 $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

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

【问题讨论】:

    标签: powershell powershell-2.0


    【解决方案1】:

    如果我没有正确阅读问题,这应该可以:

    $a = $a | where {$b -contains $_.Name}
    

    【讨论】:

    • 谢谢,没想到使用管道这么简单。完全按预期工作。
    【解决方案2】:

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

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

    $a = [array]($a | where {$b -contains $_.Name})
    

    【讨论】:

      猜你喜欢
      • 2021-11-03
      • 2021-08-01
      • 1970-01-01
      • 2014-09-05
      • 1970-01-01
      • 1970-01-01
      • 2011-01-21
      相关资源
      最近更新 更多