src/Metadata/New-XrmChoiceColumn.ps1
|
<# .SYNOPSIS Build a PicklistAttributeMetadata for a Dataverse column. .DESCRIPTION Creates a configured Microsoft.Xrm.Sdk.Metadata.PicklistAttributeMetadata object referencing a global option set, ready for New-XrmColumn. .PARAMETER LogicalName Column logical name. .PARAMETER SchemaName Column schema name. .PARAMETER DisplayName Column display name. .PARAMETER GlobalOptionSetName Global option set name. .PARAMETER Description Column description label. .PARAMETER RequiredLevel Required level. Default: None. .PARAMETER LanguageCode Label language code. Default: 1033. .OUTPUTS Microsoft.Xrm.Sdk.Metadata.PicklistAttributeMetadata. .EXAMPLE $attribute = New-XrmChoiceColumn -LogicalName "new_status" -SchemaName "new_Status" -DisplayName "Status" -GlobalOptionSetName "new_statuschoices"; New-XrmColumn -EntityLogicalName "account" -Attribute $attribute; .LINK https://learn.microsoft.com/power-apps/developer/data-platform/webapi/reference/picklistattributemetadata #> function New-XrmChoiceColumn { [CmdletBinding()] [OutputType([Microsoft.Xrm.Sdk.Metadata.PicklistAttributeMetadata])] param ( [Parameter(Mandatory = $true)] [ValidateNotNullOrEmpty()] [string] $LogicalName, [Parameter(Mandatory = $true)] [ValidateNotNullOrEmpty()] [string] $SchemaName, [Parameter(Mandatory = $true)] [ValidateNotNullOrEmpty()] [string] $DisplayName, [Parameter(Mandatory = $true)] [ValidateNotNullOrEmpty()] [string] $GlobalOptionSetName, [Parameter(Mandatory = $false)] [string] $Description, [Parameter(Mandatory = $false)] [Microsoft.Xrm.Sdk.Metadata.AttributeRequiredLevel] $RequiredLevel = [Microsoft.Xrm.Sdk.Metadata.AttributeRequiredLevel]::None, [Parameter(Mandatory = $false)] [int] $LanguageCode = 1033 ) begin { $StopWatch = [System.Diagnostics.Stopwatch]::StartNew(); Trace-XrmFunction -Name $MyInvocation.MyCommand.Name -Stage Start -Parameters ($MyInvocation.MyCommand.Parameters); } process { $attribute = [Microsoft.Xrm.Sdk.Metadata.PicklistAttributeMetadata]::new(); $attribute.LogicalName = $LogicalName; $attribute.SchemaName = $SchemaName; $attribute.DisplayName = New-XrmLabel -Text $DisplayName -LanguageCode $LanguageCode; $attribute.RequiredLevel = [Microsoft.Xrm.Sdk.Metadata.AttributeRequiredLevelManagedProperty]::new($RequiredLevel); $optionSet = [Microsoft.Xrm.Sdk.Metadata.OptionSetMetadata]::new(); $optionSet.IsGlobal = $true; $optionSet.Name = $GlobalOptionSetName; $attribute.OptionSet = $optionSet; if (-not [string]::IsNullOrWhiteSpace($Description)) { $attribute.Description = New-XrmLabel -Text $Description -LanguageCode $LanguageCode; } $attribute; } end { $StopWatch.Stop(); Trace-XrmFunction -Name $MyInvocation.MyCommand.Name -Stage Stop -StopWatch $StopWatch; } } Set-Alias -Name New-ChoiceColumn -Value New-XrmChoiceColumn; Export-ModuleMember -Function New-XrmChoiceColumn -Alias *; |