这是我的$array
:
Name GUID
---- ----
PC001 AAAA
PC001 BBBB
PC001 CCCC
PC002 AAAA
PC002 DDDD
PC003 AAAA
PC003 CCCC
这是我的剧本:
$Guid = "CCCC"
$workingName = $array | where Guid -eq $Guid | select name
$array.remove($workingName) #broke!
我想要实现的是,如果$Guid = "CCCC"
它会从数组中移除Name
和CCCC
的所有实例,其中CCCC
存在,所以这个实例有五行(PC001三行,PC0003两行),如果是BBBB
,它只会删除PC001的三行。
仅供参考:这是一个更大的剧本的一部分
答案 0 :(得分:4)
好吧,您可以创建一个新变量,或者只使用where语句更新现有变量。
$Array | ? {$_.GUID -ne 'CCCC'}
这将返回没有条目的数组
或者你可以使用方法,就像你试图在那里做的那样但是你需要以不同的方式构建数组......这是一个例子。
$Proc = Get-Process | Select -first 2
$a = New-Object System.Collections.ArrayList
$a.Add($Proc[0])
$a.Add($Proc[1])
$a
Write-Warning 'removing index 1'
$a.remove($Proc[1])
$a
答案 1 :(得分:0)
$Guid = "CCCC"
$workingName = $array | where Guid -eq $Guid | select -ExpandProperty name
$array = $array | where { $_.name -notin $workingName }