使用Runbook编写PowerShell脚本自动启用所有Key Vault软删除
Azure Key Vault 自动启用软删除脚本
PowerShell 实现
先确保已安装Azure PowerShell模块并登录账号:
Connect-AzAccount
以下脚本会批量为指定订阅下的所有Key Vault启用软删除功能(仅处理未启用的实例):
# 可选:指定目标订阅ID,需切换订阅时取消注释 # $subscriptionId = "你的订阅ID" # Set-AzContext -Subscription $subscriptionId # 获取当前订阅下所有Key Vault $keyVaults = Get-AzKeyVault foreach ($kv in $keyVaults) { $kvDetails = Get-AzKeyVault -VaultName $kv.VaultName -ResourceGroupName $kv.ResourceGroupName if (-not $kvDetails.EnableSoftDelete) { # 启用软删除,保留天数可在1-90之间调整,默认90天 Update-AzKeyVault -VaultName $kv.VaultName -ResourceGroupName $kv.ResourceGroupName -EnableSoftDelete $true -RetentionInDays 90 Write-Host "已为Key Vault $($kv.VaultName) 启用软删除" } else { Write-Host "Key Vault $($kv.VaultName) 已启用软删除,无需操作" } }
Azure CLI 实现
先登录Azure账号:
az login
批量处理脚本如下:
# 可选:指定目标订阅ID # az account set --subscription "你的订阅ID" # 获取当前订阅下所有Key Vault名称 key_vaults=$(az keyvault list --query "[].name" -o tsv) for kv in $key_vaults; do soft_delete_status=$(az keyvault show --name $kv --query "properties.enableSoftDelete" -o tsv) if [ "$soft_delete_status" == "false" ]; then # 启用软删除,保留天数范围1-90,默认90天 az keyvault update --name $kv --enable-soft-delete true --retention-days 90 echo "已为Key Vault $kv 启用软删除" else echo "Key Vault $kv 已启用软删除,无需操作" fi done
额外说明
- 若只需处理特定资源组的Key Vault,可修改获取列表的命令:
- PowerShell:
Get-AzKeyVault -ResourceGroupName "你的资源组名" - CLI:
az keyvault list --resource-group "你的资源组名"
- PowerShell:
- 软删除保留天数可根据需求调整,取值范围为1到90天
内容的提问来源于stack exchange,提问作者johnmd
相关产品推荐
相关产品推荐

