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

如何通过Azure CLI列出Azure Key Vault中所有已过期的机密

列出Azure Key Vault中所有已过期机密的实现方案

Azure CLI的--query参数基于JMESPath语法实现,本身不支持动态调用系统时间函数,无法直接在查询语句内完成过期时间 < 当前时间的筛选,你可以通过终端先获取当前时间再传入查询语句的方式实现需求,两种常用环境的实现命令如下:

PowerShell 环境(全平台兼容)

适用于Windows、macOS、Linux安装了PowerShell的场景,执行命令前将<MyVault>替换为你的密钥保管库名称即可:

$utcNow = (Get-Date).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ")
az keyvault secret list --vault-name <MyVault> `
  --query "[?attributes.expires != null] | [?attributes.expires < ``$utcNow``].{Id:id, ExpireTime:attributes.expires}" `
  --output table

注意:Key Vault存储的时间均为UTC时区,必须将本地时间转换为UTC后再做比对,否则会因时区偏差导致筛选结果错误。

Bash 环境(Linux/macOS/WSL默认终端)

适用于类Unix系统默认终端环境,替换<MyVault>后执行:

utcNow=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
az keyvault secret list --vault-name <MyVault> \
  --query "[?attributes.expires != null] | [?attributes.expires < \`$utcNow\`].{Id:id, ExpireTime:attributes.expires}" \
  --output table

逻辑说明

  • 第一层筛选attributes.expires != null用于排除未设置过期时间的永久有效机密,避免空值比对引发错误
  • Key Vault返回的过期时间为标准ISO8601格式字符串,字典序和时间先后顺序完全一致,直接做字符串大小比对即可得到正确的时间判断结果,无需额外做类型转换
  • 如果只需要返回机密名称而非完整资源ID,可以把查询语句中的Id:id替换为SecretName:name
  • 如果需要其他输出格式,修改--output后的参数为json、tsv等支持的格式即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 23:30:52