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,
        [Parameter(Mandatory = $false)]
        [string]
        $ObjectID,
        $ValueTable
    )
    process {
        try {
            Register-AzResourceProvider -ProviderNamespace "Microsoft.KeyVault"
        } catch {
            throw "Error registering resource provider."    
        }
        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 -EnabledForDiskEncryption -EnabledForDeployment -EnabledForTemplateDeployment
            # This one here is necessary, if you either use a Guest Account in the subscription or a Non-Work-Account (like your privat MSDN-Account); then you'll need to specfiy the ObjectID of your User (use Get-AzADUser for this)
            if ($ObjectID){
                Set-AzKeyVaultAccessPolicy -VaultName $KeyVaultName -ResourceGroupName $ResourceGroupName -BypassObjectIdValidation -ObjectId $ObjectID -PermissionsToKeys decrypt, encrypt, unwrapKey, wrapKey, verify, sign, get, list, update, create, import, delete, backup, restore, recover, purge  -PermissionsToSecrets get, list, set, delete, backup, restore, recover, purge            
            }
            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
    }    
}