PowerShell脚本无法列出Azure密钥保管库过期机密及删除咨询
解决Azure密钥保管库过期机密的检索与删除问题
一、权限确认与补充
你当前设置的访问策略缺少list权限,这是无法获取所有机密的核心原因之一。需要补充该权限才能列出密钥保管库内的全部机密:
Set-AzKeyVaultAccessPolicy -VaultName "testKeyVaultPwsh" -UserPrincipalName "mystuff@domain.com" -PermissionsToSecrets get,delete,list
二、完整脚本实现
以下脚本可批量获取所有机密的过期信息,并自动删除已过期的机密:
# 切换到目标订阅 Select-AzSubscription -Subscription "My subscription" # 补充必要的访问权限(若未设置) Set-AzKeyVaultAccessPolicy -VaultName "testKeyVaultPwsh" -UserPrincipalName "mystuff@domain.com" -PermissionsToSecrets get,delete,list # 获取所有机密的元数据(包含过期时间) $allSecrets = Get-AzKeyVaultSecret -VaultName "testKeyVaultPwsh" # 筛选已过期的机密 $expiredSecrets = $allSecrets | Where-Object { $_.Expires -ne $null -and $_.Expires -lt (Get-Date) } # 遍历删除过期机密 foreach ($secret in $expiredSecrets) { Write-Host "删除过期机密: $($secret.Name)" Remove-AzKeyVaultSecret -VaultName "testKeyVaultPwsh" -Name $secret.Name -Force }
关键细节说明
- 必须去掉
-AsPlainText和指定-Name的操作,否则只会返回单条机密的明文内容,丢失过期时间等元数据。 - 筛选时增加
$_.Expires -ne $null判断,避免处理未设置过期时间的机密。 -Force参数用于跳过删除确认提示,直接执行操作。
内容的提问来源于stack exchange,提问作者A.Bux
相关产品推荐
相关产品推荐

