我正在嘗試使用 PowerShell 檢查資源組中是否已存在 Azure Key Vault。如果具有相同名稱的保管庫即使處于已洗掉狀態也已存在,我只想收到一條用戶友好的訊息,說明 Key Vault 已存在或捕獲例外(如果有)。我不希望終端因錯誤而炸毀。如果密鑰保管庫不存在,我想創建一個新的密鑰保管庫。
我有以下代碼:
$KeyVaultName = "Key Vault Name"
$ResourceGroupName = "Resource group name"
$KeyVault = Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $ResourceGroupName -ErrorAction SilentlyContinue
if($null -eq $KeyVault){
New-AzKeyVault -ResourceGroupName $ResourceGroupName -VaultName $KeyVaultName -Location "Switzerland North"
}
else{
Write-Host "$KeyVaultName already exists"
}
執行代碼后,我在終端上收到此錯誤訊息:
New-AzKeyVault :已存在已洗掉狀態的同名保管庫。您需要恢復或清除現有的密鑰保管庫。
我也嘗試使用以下代碼:
if (!(Test-AzureName -Service $KeyVaultName))
{
New-AzKeyVault -ResourceGroupName $ResourceGroupName -VaultName $KeyVaultName -Location "Switzerland North"
}
執行后它給了我以下錯誤:
Test-AzureName :未指定默認訂閱。使用 Select-AzureSubscription -Default 設定默認訂閱。
雖然我只使用了一個訂閱。
有人可以告訴我我在這里做錯了嗎?您能否為我提供一種有效的方法來實作這一目標?
uj5u.com熱心網友回復:
您可以嘗試以下操作:
$KeyVaultName = "keyvaultname"
$ResourceGroupName = "resourcegroupname"
$KeyVaultLocation = "keyvaultlocation"
$KeyVault = Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $ResourceGroupName -ErrorAction SilentlyContinue
if($null -eq $KeyVault){
$KeyVault = Get-AzKeyVault -VaultName $KeyVaultName -Location $KeyVaultLocation -InRemovedState -ErrorAction SilentlyContinue
if ($null -eq $KeyVault) {
New-AzKeyVault -ResourceGroupName $ResourceGroupName -VaultName $KeyVaultName -Location $KeyVaultLocation
} else {
Write-Host "$KeyVaultName exists but is in soft-deleted state"
}
}
else{
Write-Host "$KeyVaultName already exists"
}
本質上,我們在這里所做的是首先檢查 Key Vault 是否存在并處于活動狀態。如果我們沒有找到任何 Key Vault,那么我們正在檢查 Key Vault 是否處于軟洗掉狀態。如果未找到任何結果,則我們將繼續創建新的 Key Vault。
但是,請注意 Key Vault 名稱是全域唯一的,因此您的New-AzKeyVaultCmdlet很可能會失敗。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/389927.html
