Public/func_Import-KeyVaultSecrets.ps1
|
Function Import-KeyVaultSecrets { <# .SYNOPSIS Imports a set of secrets from JSON file input into a target key vault .DESCRIPTION The command takesan array of secrets to import. The secrets JSON must have the following format. [ { "kvSecretName": "Secret-1", "kvValue": "somevalue" }, { "kvSecretName": "Secret-2", "kvValue": "somevalue" }, { "kvSecretName": "Secret-3", "kvValue": "somevalue" } ] .PARAMETER Name The name of the target key vault. .INPUTS Secrets .OUTPUTS None. .EXAMPLE PS> Import-CdfGitHubSecretsToKeyVault ... | Import-CdfKeyVaultSecrets ` -Name "KeyVault Name" PS> (Get-Content "secrets json file path" | ConvertFrom-Json -AsHashtable) ` | Import-CdfKeyVaultSecrets ` -Name "KeyVault Name" .LINK Import-CdfGitHubSecretsToKeyVault #> [CmdletBinding()] Param( [Parameter(ValueFromPipeline = $true, Mandatory = $true)] [hashtable] $Secrets, [Parameter(Mandatory = $true)] [string] $Name ) foreach ($Secret in $Secrets) { Write-Verbose "Processing $($Secret.kvSecretName)" $CurrentSecret = Get-AzKeyVaultSecret -VaultName $Name -Name $Secret.kvSecretName -AsPlainText if($Secret.kvValue -eq $CurrentSecret) { Write-Verbose " - Existing, match, no change" } else { Write-Verbose " - Add/Update" $SecretValue = ConvertTo-SecureString $Secret.kvValue -AsPlainText -Force Set-AzKeyVaultSecret -VaultName $Name -Name $Secret.kvSecretName -SecretValue $SecretValue } } } |