src/Types/New-XrmOption.ps1
|
<# .SYNOPSIS Build an OptionMetadata object for Dataverse option sets. .DESCRIPTION Creates a configured Microsoft.Xrm.Sdk.Metadata.OptionMetadata object that can be reused when creating global option sets, local choice columns, or synchronizing option values. .PARAMETER Value Integer value of the option. .PARAMETER Label Display label for the option. .PARAMETER Description Optional description label. .PARAMETER Color Optional hexadecimal color (for example #5B8DEF). .PARAMETER IsManaged Optional managed state. .PARAMETER ExternalValue Optional external value. .PARAMETER ParentValues Optional parent values for hierarchical choices. .PARAMETER Tag Optional tag value. Dataverse exposes `IsHidden` with a non-public setter on OptionMetadata, so it is not configurable through this helper. .OUTPUTS Microsoft.Xrm.Sdk.Metadata.OptionMetadata. .EXAMPLE $option = New-XrmOption -Value 100000000 -Label (New-XrmLabel -Text "Low") -Color "#CDDAFD"; #> function New-XrmOption { [CmdletBinding()] [OutputType([Microsoft.Xrm.Sdk.Metadata.OptionMetadata])] param ( [Parameter(Mandatory = $true)] [int] $Value, [Parameter(Mandatory = $true)] [ValidateNotNull()] [Microsoft.Xrm.Sdk.Label] $Label, [Parameter(Mandatory = $false)] [Microsoft.Xrm.Sdk.Label] $Description, [Parameter(Mandatory = $false)] [ValidatePattern('^#[0-9A-Fa-f]{6}$')] [string] $Color, [Parameter(Mandatory = $false)] [Nullable[bool]] $IsManaged, [Parameter(Mandatory = $false)] [string] $ExternalValue, [Parameter(Mandatory = $false)] [int[]] $ParentValues, [Parameter(Mandatory = $false)] [string] $Tag ) begin { $StopWatch = [System.Diagnostics.Stopwatch]::StartNew(); Trace-XrmFunction -Name $MyInvocation.MyCommand.Name -Stage Start -Parameters ($MyInvocation.MyCommand.Parameters); } process { $option = [Microsoft.Xrm.Sdk.Metadata.OptionMetadata]::new(); $option.Value = $Value; $option.Label = $Label; if ($PSBoundParameters.ContainsKey('Description')) { $option.Description = $Description; } if ($PSBoundParameters.ContainsKey('Color')) { $option.Color = $Color; } if ($PSBoundParameters.ContainsKey('IsManaged')) { $option.IsManaged = $IsManaged; } if ($PSBoundParameters.ContainsKey('ExternalValue')) { $option.ExternalValue = $ExternalValue; } if ($PSBoundParameters.ContainsKey('ParentValues')) { $option.ParentValues = $ParentValues; } if ($PSBoundParameters.ContainsKey('Tag')) { $option.Tag = $Tag; } $option; } end { $StopWatch.Stop(); Trace-XrmFunction -Name $MyInvocation.MyCommand.Name -Stage Stop -StopWatch $StopWatch; } } Export-ModuleMember -Function New-XrmOption -Alias *; |