src/Administration/Add-XrmInstance.ps1
<#
.SYNOPSIS Create new Dataverse instance. .DESCRIPTION Provision new dataverse instance with database. .PARAMETER InstanceDisplayName Instance friendly name .PARAMETER InstanceDomainName Instance domain name for instance url (myinstance => myinstance.crm.dynamics1.com) .PARAMETER Location DataCenter region (France, EMEA, UK, ...) .PARAMETER Sku Instance type (sandbox or production) .PARAMETER CurrencyCodeName Name of currency (EUR, ...) .PARAMETER LanguageName Language name LCID (English = 1033, French = 1036, ...) #> function Add-XrmInstance { [CmdletBinding()] param ( [Parameter(Mandatory)] [String] $InstanceDisplayName, [Parameter(Mandatory)] [String] $InstanceDomainName, [Parameter(Mandatory = $true)] [ArgumentCompleter( { Get-XrmRegions })] [String] $Location, [Parameter(Mandatory = $true)] [ValidateSet("Sandbox", "Production")] [String] $Sku, [Parameter(Mandatory = $true)] [ArgumentCompleter( { Get-AdminPowerAppCdsDatabaseCurrencies })] [String] $CurrencyCodeName, [Parameter(Mandatory = $true)] [ArgumentCompleter( { Get-AdminPowerAppCdsDatabaseLanguages })] [String] $LanguageName ) begin { $StopWatch = [System.Diagnostics.Stopwatch]::StartNew(); Trace-XrmFunction -Name $MyInvocation.MyCommand.Name -Stage Start -Parameters ($MyInvocation.MyCommand.Parameters); Assert-XrmAdminConnected; } process { $response = New-AdminPowerAppEnvironment -DisplayName $InstanceDisplayName -DomainName $InstanceDomainName -Location $Location -EnvironmentSku $Sku -CurrencyName $CurrencyCodeName -LanguageName $LanguageName -ProvisionDatabase -WaitUntilFinished $true; if ($response.Code) { throw "$($response.Error.code) : $($response.Error.message)"; } $response; } end { $StopWatch.Stop(); Trace-XrmFunction -Name $MyInvocation.MyCommand.Name -Stage Stop -StopWatch $StopWatch; } } Export-ModuleMember -Function Add-XrmInstance -Alias *; |