src/Metadata/New-XrmAutoNumberColumn.ps1
|
<# .SYNOPSIS Build an auto-number StringAttributeMetadata for a Dataverse column. .DESCRIPTION Creates a configured Microsoft.Xrm.Sdk.Metadata.StringAttributeMetadata object with AutoNumberFormat, ready for Add-XrmColumn. .PARAMETER LogicalName Column logical name. .PARAMETER SchemaName Column schema name. .PARAMETER DisplayName Column display name. .PARAMETER AutoNumberFormat Auto-number format string. .PARAMETER MaxLength Maximum text length. Default: 100. .PARAMETER Description Column description label. .PARAMETER RequiredLevel Required level. Default: None. .PARAMETER LanguageCode Label language code. Default: 1033. .OUTPUTS Microsoft.Xrm.Sdk.Metadata.StringAttributeMetadata. .EXAMPLE $attribute = New-XrmAutoNumberColumn -LogicalName "new_number" -SchemaName "new_Number" -DisplayName "Number" -AutoNumberFormat "ORD-{SEQNUM:5}"; Add-XrmColumn -EntityLogicalName "account" -Attribute $attribute; .LINK https://learn.microsoft.com/power-apps/developer/data-platform/define-auto-number-fields #> function New-XrmAutoNumberColumn { [CmdletBinding()] [OutputType([Microsoft.Xrm.Sdk.Metadata.StringAttributeMetadata])] param ( [Parameter(Mandatory = $true)] [ValidateNotNullOrEmpty()] [string] $LogicalName, [Parameter(Mandatory = $true)] [ValidateNotNullOrEmpty()] [string] $SchemaName, [Parameter(Mandatory = $true)] [ValidateNotNullOrEmpty()] [string] $DisplayName, [Parameter(Mandatory = $true)] [ValidateNotNullOrEmpty()] [string] $AutoNumberFormat, [Parameter(Mandatory = $false)] [ValidateRange(1, 4000)] [int] $MaxLength = 100, [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.StringAttributeMetadata]::new(); $attribute.LogicalName = $LogicalName; $attribute.SchemaName = $SchemaName; $attribute.DisplayName = New-XrmLabel -Text $DisplayName -LanguageCode $LanguageCode; $attribute.MaxLength = $MaxLength; $attribute.AutoNumberFormat = $AutoNumberFormat; $attribute.RequiredLevel = [Microsoft.Xrm.Sdk.Metadata.AttributeRequiredLevelManagedProperty]::new($RequiredLevel); 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-AutoNumberColumn -Value New-XrmAutoNumberColumn; Export-ModuleMember -Function New-XrmAutoNumberColumn -Alias *; |