Public/Set-BuildSecrets.ps1
function Set-BuildSecrets { <# .SYNOPSIS Sets all secrets stored in a specific key vault as environment variables. .DESCRIPTION Sets all secrets stored in a specific key vault as environment variables. The user has to login to azure first using "Login-AzureRMAccount" .PARAMETER KeyVaultName The name of the key vault containing the environment .PARAMETER SubscriptionID Allows the user to specify a subscription id if required. if not specified, the default subscription will be used. .PARAMETER UseSecureString If specified the securestring version of the secrets will be stored in the environment. .EXAMPLE Set-BuildEnvironment -KeyVaultName "MyVault" -ResourceGroupName "MyResourceGroup" #> [CmdletBinding()] param ( [Parameter(Mandatory=$true)] [String[]]$KeyVaultName, [Parameter(Mandatory=$false)] [String]$SubscriptionID, [Parameter(Mandatory=$false)] [Switch]$UseSecureString ) Begin { } Process { try { # Select the appropriate subscription if ($SubscriptionID) { Select-AzureRmSubscription -SubscriptionId $SubscriptionID } # Get all secrets from specified vault's $Secrets = @() foreach ($Name in $KeyVaultName) { $Secrets += Get-AzureKeyVaultSecret -VaultName $KeyVaultName | Select-Object -ExpandProperty Name } foreach ($Secret in $Secrets) { # We get the secret from azure key vault $SecretValue = Get-AzureKeyVaultSecret -VaultName $KeyVaultName -Name $Secret if ($UseSecureString) { # Set Environment Variable using secure string New-Item -Path Env:$Secret -Value $SecretValue.SecretValue -Force } else { # Set Environment Variable using clear text New-Item -Path Env:$Secret -Value $SecretValue.SecretValueText -Force } } # Store the secret names of the environment which is being loaded. $Script:Vaults += $KeyVaultName } Catch { Throw "$($_.Exception.Message)" } } End { } } |