src/Metadata/Add-XrmGlobalOptionSet.ps1
|
<# .SYNOPSIS Create a global option set in Microsoft Dataverse. .DESCRIPTION Create a new global option set using CreateOptionSetRequest. .PARAMETER XrmClient Xrm connector initialized to target instance. Use latest one by default. (Dataverse ServiceClient) .PARAMETER OptionSetMetadata The OptionSetMetadata object defining the global option set. .PARAMETER Name Global option set name when creating from a typed option definition list. .PARAMETER DisplayName Global option set display label when creating from a typed option definition list. .PARAMETER Options Global option set options when creating from a typed option definition list. .PARAMETER Description Optional global option set description label when creating from a typed option definition list. .PARAMETER SolutionUniqueName Solution unique name to add the global option set to. .OUTPUTS Microsoft.Xrm.Sdk.OrganizationResponse. The CreateOptionSet response. .EXAMPLE $os = [Microsoft.Xrm.Sdk.Metadata.OptionSetMetadata]::new(); $os.Name = "new_priority"; $os.DisplayName = New-XrmLabel -Text "Priority"; $os.IsGlobal = $true; $os.OptionSetType = [Microsoft.Xrm.Sdk.Metadata.OptionSetType]::Picklist; Add-XrmGlobalOptionSet -OptionSetMetadata $os; .EXAMPLE $options = @( (New-XrmOption -Value 100000000 -Label (New-XrmLabel -Text "Low") -Color "#CDDAFD"), (New-XrmOption -Value 100000001 -Label (New-XrmLabel -Text "High") -Color "#FCE1E4") ); Add-XrmGlobalOptionSet -Name "new_priority" -DisplayName (New-XrmLabel -Text "Priority") -Options $options; #> function Add-XrmGlobalOptionSet { [CmdletBinding()] [OutputType([Microsoft.Xrm.Sdk.OrganizationResponse])] param ( [Parameter(Mandatory = $false, ValueFromPipeline)] [Microsoft.PowerPlatform.Dataverse.Client.ServiceClient] $XrmClient = $Global:XrmClient, [Parameter(Mandatory = $true, ParameterSetName = 'ByMetadata')] [ValidateNotNull()] [Microsoft.Xrm.Sdk.Metadata.OptionSetMetadataBase] $OptionSetMetadata, [Parameter(Mandatory = $true, ParameterSetName = 'ByDefinition')] [ValidateNotNullOrEmpty()] [string] $Name, [Parameter(Mandatory = $true, ParameterSetName = 'ByDefinition')] [ValidateNotNull()] [Microsoft.Xrm.Sdk.Label] $DisplayName, [Parameter(Mandatory = $true, ParameterSetName = 'ByDefinition')] [ValidateNotNull()] [Microsoft.Xrm.Sdk.Metadata.OptionMetadata[]] $Options, [Parameter(Mandatory = $false, ParameterSetName = 'ByDefinition')] [Microsoft.Xrm.Sdk.Label] $Description, [Parameter(Mandatory = $false)] [string] $SolutionUniqueName ) begin { $StopWatch = [System.Diagnostics.Stopwatch]::StartNew(); Trace-XrmFunction -Name $MyInvocation.MyCommand.Name -Stage Start -Parameters ($MyInvocation.MyCommand.Parameters); } process { $metadataToCreate = $OptionSetMetadata; if ($PSCmdlet.ParameterSetName -eq 'ByDefinition') { $optionSet = [Microsoft.Xrm.Sdk.Metadata.OptionSetMetadata]::new(); $optionSet.Name = $Name; $optionSet.DisplayName = $DisplayName; $optionSet.IsGlobal = $true; $optionSet.OptionSetType = [Microsoft.Xrm.Sdk.Metadata.OptionSetType]::Picklist; if ($PSBoundParameters.ContainsKey('Description')) { $optionSet.Description = $Description; } foreach ($option in $Options) { $optionSet.Options.Add($option); } $metadataToCreate = $optionSet; } $request = [Microsoft.Xrm.Sdk.Messages.CreateOptionSetRequest]::new(); $request.OptionSet = $metadataToCreate; if ($PSBoundParameters.ContainsKey('SolutionUniqueName')) { $request.Parameters["SolutionUniqueName"] = $SolutionUniqueName; } $response = Invoke-XrmRequest -XrmClient $XrmClient -Request $request; $response; } end { $StopWatch.Stop(); Trace-XrmFunction -Name $MyInvocation.MyCommand.Name -Stage Stop -StopWatch $StopWatch; } } Export-ModuleMember -Function Add-XrmGlobalOptionSet -Alias *; |