如何通过PowerShell中的AZ CLI获取Key Vault中前缀为'app'的密钥列表
PowerShell脚本实现Key Vault指定前缀密钥筛选
方法一:AZ CLI内置过滤(高效)
直接通过AZ CLI的--query参数使用JMESPath语法在API层面过滤,减少本地数据传输:
param( [Parameter(Mandatory=$true)] [string]$KeyVaultName ) # 筛选并返回以'app'开头的密钥名称 $filteredSecrets = az keyvault secret list --vault-name $KeyVaultName --query "[?starts_with(name, 'app')].name" --output tsv # 输出结果 $filteredSecrets
使用说明
- 运行脚本时需传入必填的密钥库名称参数:
.\Get-AppSecrets.ps1 -KeyVaultName "你的密钥库名称" --query "[?starts_with(name, 'app')].name":通过JMESPath的starts_with函数匹配名称前缀,仅返回密钥名称字段--output tsv:以纯文本格式输出结果,方便直接查看或后续处理
方法二:PowerShell本地过滤(灵活)
先获取所有密钥数据,再通过PowerShell语法过滤,适合需要对密钥做更多后续处理的场景:
param( [Parameter(Mandatory=$true)] [string]$KeyVaultName ) # 获取所有密钥并转换为PowerShell对象 $allSecrets = az keyvault secret list --vault-name $KeyVaultName --output json | ConvertFrom-Json # 过滤名称以'app'开头的密钥,提取名称 $filteredSecretNames = $allSecrets | Where-Object { $_.name -like 'app*' } | Select-Object -ExpandProperty name # 输出结果 $filteredSecretNames
使用说明
ConvertFrom-Json:将AZ CLI返回的JSON格式数据转换为PowerShell可操作的对象Where-Object { $_.name -like 'app*' }:使用PowerShell通配符匹配前缀Select-Object -ExpandProperty name:仅提取密钥名称字段输出
测试验证
若密钥库内包含密钥:app1name、app2name、app1password、dbpassword1、app2password、dbpassword2,上述两种方法均会返回:app1name、app2name、app1password、app2password
内容的提问来源于stack exchange,提问作者ossentoo
相关产品推荐
相关产品推荐

