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

基于PowerShell提取AKS镜像特定标签并实现分组聚合

问题

需要通过PowerShell命令对给定的AKS镜像列表完成以下操作:

  • 提取指定名称的镜像标签(如ip-id、ip-license),过滤无关镜像
  • 将标签名称与对应版本号整理为同行显示
  • 对重复标签分组,将同一标签的所有版本号聚合为逗号分隔的字符串,输出指定格式

给定镜像列表:

testcontainersgw.azurecr.io/reloader:v1.0.51
testcontainersgw.azurecr.io/tef/ip-id:19900909.1
testcontainersgw.azurecr.io/tef/ip-license:19900909.1
testcontainersgw.azurecr.io/tef/ip-finalsync:19900906.2
testcontainersgw.azurecr.io/tef/ip-tubelas:19900909.1
mcr.microsoft.com/aks/ip-masq-agent-v2:v0.1.11
mcr.microsoft.com/oss/kubernetes/kube-proxy:v1.30.3

多组标签输入示例:

ip-id 19900909.1
ip-license 19900906.2
ip-id 19900809.1
...

期望输出格式:

ip-id = "19900909.1","19900809.1", "19900509.1"
ip-license = "19900906.2", "19900905.2", "19900406.2"
...
解决方案

以下PowerShell命令可完成需求:

# 定义需要保留的目标标签
$targetTags = @("ip-id", "ip-license")

# 读取并处理镜像列表,完成过滤、分组与格式输出
Get-Content -Path "镜像列表文件路径.txt" | ForEach-Object {
    # 用正则匹配提取标签和版本号
    if ($_ -match '\/(?<tag>ip-[^\/:]+):(?<version>.+)$') {
        $tag = $matches.tag
        $version = $matches.version
        # 仅保留目标标签条目
        if ($targetTags -contains $tag) {
            [PSCustomObject]@{
                Tag     = $tag
                Version = $version
            }
        }
    }
} | Group-Object -Property Tag | ForEach-Object {
    # 将版本号格式化为带引号的字符串,用逗号分隔
    $versions = $_.Group.Version | ForEach-Object { "`"$_`"" } -Join ", "
    # 输出指定格式内容
    "$($_.Name) = $versions"
}

命令说明

  1. 过滤目标标签:通过正则表达式匹配镜像地址中ip-开头的标签,仅保留$targetTags定义的标签类型
  2. 整理条目结构:将匹配到的标签与版本封装为自定义对象,为后续分组操作提供数据基础
  3. 分组聚合输出:按标签名称分组后,将同一标签的所有版本号拼接为带引号、逗号分隔的字符串,输出符合要求的格式

针对给定镜像列表的输出结果

ip-id = "19900909.1"
ip-license = "19900909.1"

若输入包含重复标签(如示例中的多组ip-id),命令会自动聚合对应版本号,生成符合期望格式的内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 17:20:16