从Powershell中的对象数组中删除项
我有一个数组对象$a,它返回如下输出 通过执行$a[0].Name,我可以访问每个“Name”条目,$a[0].Available,我可以访问其相应的可用空间 我有另一个数组,比如$b,它包含一些名称,比如$b返回两个名称“sandeep_aggr1”和“aggr4”。这只是一个数组(没有像Name这样的属性,可用),不是一个对象,所以它不能使用Compare对象 我想删除原始对象$a中的其他条目,但“Name”等于“sandeep_aggr1”和“aggr4”的条目除外 这就是我正在做的从Powershell中的对象数组中删除项,powershell,powershell-2.0,Powershell,Powershell 2.0,我有一个数组对象$a,它返回如下输出 通过执行$a[0].Name,我可以访问每个“Name”条目,$a[0].Available,我可以访问其相应的可用空间 我有另一个数组,比如$b,它包含一些名称,比如$b返回两个名称“sandeep_aggr1”和“aggr4”。这只是一个数组(没有像Name这样的属性,可用),不是一个对象,所以它不能使用Compare对象 我想删除原始对象$a中的其他条目,但“Name”等于“sandeep_aggr1”和“aggr4”的条目除外 这就是我正在做的 f
foreach($bb in $b)
{
foreach($aa in $a)
{
if($aa.Name -ne $bb)
{
$aa.Remove($aa.Name)
}
}
}
echo $a
但是,我没有看到删除的元素,我是不是遗漏了什么?
感谢任何帮助如果我正确阅读了问题,这应该可以:
$a = $a | where {$b -contains $_.Name}
我也遇到了同样的问题,如果$a变成一个只有一个元素的数组,它就不起作用了。Powershell忽略了$a是数组这一事实。这是一个很大的问题,因为我刚刚使用了JSON转换 我刚刚添加了一个演员阵容:
$a = [array]($a | where {$b -contains $_.Name})
谢谢,没想到它这么容易用。工作完全符合预期。