Public/AD/New-DSAdDomain.ps1
function New-DSAdDomain { [CmdletBinding()] param ( [ValidateNotNullOrEmpty()][string]$DomainName, [ValidateNotNullOrEmpty()][string]$DisplayName, [ValidateNotNullOrEmpty()][string]$AdministrationUsername, [ValidateNotNullOrEmpty()][string]$AdministrationPassword, [bool]$IsLDAPS, [int]$LdapsCustomPort, [bool]$AutoCreateEnabled = $false, [DomainUsernameFormatType]$DomainUsernameFormatType, [bool]$DomainUserReadOnly, [string]$DefaultVault ) begin { Write-Verbose '[New-DSAdDomain] Beginning...' if ([string]::IsNullOrWhiteSpace($Global:DSSessionToken)) { throw 'Session invalid. Please call New-DSSession.' } } process { $MsDomainConfiguration = [MsDomainConfiguration]::new() $MsDomainConfiguration.DomainName = $DomainName $MsDomainConfiguration.DisplayName = $DisplayName $MsDomainConfiguration.AdministrationUsername.Set($AdministrationUsername) $MsDomainConfiguration.AdministrationPassword.Set((Protect-ResourceToHexString $AdministrationPassword)) if ($PSBoundParameters.ContainsKey('IsLdaps')) { $MsDomainConfiguration.IsLdaps.Set($IsLDAPS) $PSBoundParameters.ContainsKey('LdapsCustomPort') ? $MsDomainConfiguration.LdapsCustomPort.Set($LdapsCustomPort) : [void] } if ($PSBoundParameters.ContainsKey('AutoCreateEnabled') -and $AutoCreateEnabled) { $MsDomainConfiguration.AutoCreateEnabled.Set($AutoCreateEnabled) if ($PSBoundParameters.ContainsKey('DefaultVault')) { $VaultId = ($res = Get-DSVault -All).isSuccess ? ($res.Body.data | Where-Object { $_.Name -eq $DefaultVault } | Select-Object -ExpandProperty id) : ([guid]::Empty()) if ($VaultId -eq ([guid]::Empty)) { Write-Verbose "[New-DSAdDomain] $DefaultVault could not be found. Devolutions Server's default vault used instead." } $MsDomainConfiguration.AutoCreateVault.Set($VaultId) } $PSBoundParameters.ContainsKey('DomainUsernameFormatType') ? $MsDomainConfiguration.AutoCreateUsernameFormatType.Set($DomainUsernameFormatType) : ([void] | Out-Null) $PSBoundParameters.ContainsKey('DomainUserReadOnly') ? $MsDomainConfiguration.AutoCreateReadOnly.Set($DomainUserReadOnly) : ([void] | Out-Null) } $RequestParams = @{ URI = "$Script:DSBaseURI/api/active-directory/domain-configurations" Method = 'POST' Body = (ConvertTo-Json $MsDomainConfiguration) } $res = Invoke-DS @RequestParams return $res } end { $res.isSuccess ? (Write-Verbose '[New-DSAdDomain] Completed successfully!') : (Write-Verbose '[New-DSAdDomain] Ended with errors...') } } |