Private/New-CustomAzKeyVault.ps1

function Global:New-CustomAzKeyVault {
    [CmdletBinding()]
    param(        
        [Parameter(Mandatory = $true)]
        [string]
        $ResourceGroupName,        
        [Parameter(Mandatory = $true)]
        [string]
        $ResourceLocation,
        [Parameter(Mandatory = $true)]
        [string]
        $KeyVaultName,
        $ValueTable
    )
    process {
        Write-CustomHost -Message "Checking if KeyVault $KeyVaultName already exists..."
        $keyVault = Get-AzKeyVault -ResourceGroupName $ResourceGroupName -VaultName $KeyVaultName -ErrorAction SilentlyContinue         
        if (-not($keyVault)) {
            Write-CustomHost -Message "Creating KeyVault $KeyVaultName ..."
            $keyVault = New-AzKeyVault -ResourceGroupName $ResourceGroupName -Location $ResourceLocation -Name $KeyVaultName
            Write-CustomHost -Message "Done."
        }
        if ($ValueTable){
            foreach ($ValuePair in $ValueTable.GetEnumerator()){
                Write-CustomHost -Message "Adding entry $($ValuePair.Key)"
                Set-AzKeyVaultSecret -VaultName $KeyVaultName -Name $ValuePair.Key -SecretValue (ConvertTo-SecureString -String $ValuePair.Value -AsPlainText -Force) | Out-Null
            }
        }
        $keyVault
    }    
}