Skip to content

Instantly share code, notes, and snippets.

@MauricioZa
Created June 5, 2023 03:22
Show Gist options
  • Select an option

  • Save MauricioZa/c04825a2c9946c7c6d5b9a2dc437c2af to your computer and use it in GitHub Desktop.

Select an option

Save MauricioZa/c04825a2c9946c7c6d5b9a2dc437c2af to your computer and use it in GitHub Desktop.
# ---------------------------------------------------------------
# CONNECT TO AZURE
# ---------------------------------------------------------------
Connect-AzAccount
$SubscriptionId = "ef7f6efc-8813-4f2b-b1f0-71406ff5d7b4"
Select-AzSubscription -SubscriptionId $SubscriptionId
# ---------------------------------------------------------------
# VARIABLES
# ---------------------------------------------------------------
$sourceKeyVaultName = "kv-mau-production"
$destinationKeyVaultName = "kv-mau-production-copy2"
$path = "c:\delete\keyvault\"
# ---------------------------------------------------------------
# DIRECTORY SETUP
# ---------------------------------------------------------------
New-Item -Path $path -Name "certificates" -ItemType "directory"
New-Item -Path $path -Name "keys" -ItemType "directory"
New-Item -Path $path -Name "secrets" -ItemType "directory"
# ---------------------------------------------------------------
# BACKUP
# ---------------------------------------------------------------
# Backup certificates
$certificates = get-AzKeyVaultCertificate -VaultName $sourceKeyVaultName
foreach ($certificate in $certificates){
$outputFile = $path+"certificates\"+$certificate.name+".blob"
Backup-AzKeyVaultCertificate -VaultName $sourceKeyVaultName -Name $certificate.name -OutputFile $outputFile
}
# Backup keys
$keys = get-AzKeyVaultKey -VaultName $sourceKeyVaultName
foreach ($key in $keys){
$outputFile = $path+"keys\"+$key.name+".blob"
Backup-AzKeyVaultKey -VaultName $sourceKeyVaultName -Name $key.name -OutputFile $outputFile
}
# Backup secrets
$secrets = get-AzKeyVaultsecret -VaultName $sourceKeyVaultName
foreach ($secret in $secrets){
$outputFile = $path+"secrets\"+$secret.name+".blob"
Backup-AzKeyVaultsecret -VaultName $sourceKeyVaultName -Name $secret.name -OutputFile $outputFile
}
# ---------------------------------------------------------------
# RESTORE
# ---------------------------------------------------------------
# Restore certificates
$certificates = Get-ChildItem -Path $path\"certificates\"
foreach ($certificate in $certificates){
$inputFile = $path+"certificates\"+$certificate.name
Restore-AzKeyVaultCertificate -VaultName $destinationKeyVaultName -InputFile $inputFile
}
# Restore keys
$keys = Get-ChildItem -Path $path\"keys\"
foreach ($key in $keys){
$inputFile = $path+"keys\"+$key.name
Restore-AzKeyVaultKey -VaultName $destinationKeyVaultName -InputFile $inputFile
}
# Restore secrets
$secrets = Get-ChildItem -Path $path\"secrets\"
foreach ($secret in $secrets){
$inputFile = $path+"secrets\"+$secret.name
Restore-AzKeyVaultSecret -VaultName $destinationKeyVaultName -InputFile $inputFile
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment