You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell数组过滤问题:移除指定元素及Master/Develop项

问题需求与解决方案

需求说明

我有两个数组:

  • $array1:存储Docker容器及镜像名称
  • $array2:存储Azure DevOps活跃拉取请求编号

需要实现:

  • 移除$array1中包含$array2里任意编号的元素
  • 同时必须移除所有包含Master或Develop的元素

当前尝试的代码

$array1 = docker ps -a --no-trunc -f name=myWEAPS* | ForEach-Object { "$(($_ -split '\s+',25)[1,-1])" }
$array1 = $dockerCons[1..($dockerCons.Length - 1)]

$array1 = 'myserver:1517 myserver7998', 'myserver:1515 myserver7990', 'myserver:1514  myserver7999', 'myserver:Master', 'myserverS8003', 'myserver:Develop myserver8002'

$array2 = '1517' , '1518'
$reg = [regex] '[7][0-9][0-9][0-9]'

foreach ($dockerCon in $array1) {
    #Write-Host $dockerCon -ForegroundColor Gray
    if ($array2 -notcontains $dockerCon -and $dockerCon -match $reg) {
        Write-Host "`t"$dockerCon -ForegroundColor Red
    } 
}

原代码的问题

  1. 匹配逻辑错误:$array2 -notcontains $dockerCon是全字符串匹配,但$array2里是短编号(比如1517),而$array1的元素是长名称,根本无法匹配,导致无法过滤掉含目标编号的项
  2. 未处理Master/Develop过滤:代码里完全没加移除含Master或Develop元素的判断
  3. 正则匹配冗余:需求里没要求只保留含7开头四位数字的项,这个正则是多余的限制

修正后的代码

# 示例数据
$array1 = 'myserver:1517 myserver7998', 'myserver:1515 myserver7990', 'myserver:1514  myserver7999', 'myserver:Master', 'myserverS8003', 'myserver:Develop myserver8002'
$array2 = '1517' , '1518'

# 第一步:过滤掉含Master或Develop的项
$filteredArray = $array1 | Where-Object { $_ -notmatch 'Master|Develop' }

# 第二步:过滤掉包含$array2中任意编号的项
$filteredArray = $filteredArray | Where-Object {
    $item = $_
    # 检查当前项是否包含$array2里的任何一个编号
    -not ($array2 | Where-Object { $item -match $_ })
}

# 输出结果
$filteredArray | ForEach-Object { Write-Host "`t$_" -ForegroundColor Red }

代码说明

  1. 过滤Master/Develop:用-notmatch 'Master|Develop'直接排除包含这两个关键词的元素
  2. 过滤PR编号:对每个剩余元素,检查是否包含$array2中的任意编号,用-not反向保留不包含的项
  3. 如果是从docker ps获取原始数据,替换示例的$array1赋值即可:
# 从Docker获取容器名称的正确写法(修正原代码里的变量名错误:$dockerCons应该是$array1)
$array1 = docker ps -a --no-trunc -f name=myWEAPS* | ForEach-Object { ($_ -split '\s+',25)[1,-1] }
# 跳过表头行
$array1 = $array1[1..($array1.Length - 1)]

内容的提问来源于stack exchange,提问作者JJPSKI

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 11:21:18