You need to enable JavaScript to run this app. 如何在PowerShell中按名称筛选Azure磁盘资源用于Azure DevOps流水线
优惠活动
大模型
产品
解决方案
定价
更多

如何在PowerShell中按名称筛选Azure磁盘资源用于Azure DevOps流水线

解决方案

问题原因

原有写法失效是因为PowerShell会将$list数组整体转换为空格分隔的字符串进行匹配,无法遍历匹配列表中的每一个规则。

最优实现方案(无需预定义长列表)

你的磁盘命名规则非常明确,直接用正则匹配即可覆盖所有disk1/disk-1/disk_1到disk8/disk-8/disk_8的格式,代码更简洁:

# 正则说明:disk匹配固定前缀,[-_]?匹配0或1个横杠/下划线,[1-8]匹配1-8的数字
Get-AzDisk | Where-Object { $_.Name -match 'disk[-_]?[1-8]' }

自定义匹配列表的实现方案

如果后续需要自定义非连续的匹配规则,也可以按如下方式实现:

# 生成匹配规则列表,也可以手动赋值自定义规则
$matchPatterns = 1..8 | ForEach-Object { "disk-$_", "disk_$_", "disk$_" }

# 遍历匹配每一条规则
Get-AzDisk | Where-Object { 
    $diskName = $_.Name
    $matchPatterns.Where({ $diskName -like "*$_*" }, 'First').Count -gt 0 
}

Azure DevOps流水线适配注意事项

  • 请使用Azure PowerShell任务运行该脚本,任务会自动注入你配置的Azure服务连接权限,无需额外写登录代码
  • 如使用Linux/MacOS代理的PowerShell Core,上述语法完全兼容,无需修改
  • 可添加调试输出方便流水线运行后排查结果:
$matchedDisks = Get-AzDisk | Where-Object { $_.Name -match 'disk[-_]?[1-8]' }
$matchedDisks | Select-Object Name, ResourceGroupName, DiskSizeGB | Format-Table | Out-String | Write-Host

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 20:15:03