src/Solutions/New-XrmPublisher.ps1
|
<# .SYNOPSIS Create a new publisher in Microsoft Dataverse. .DESCRIPTION Create a publisher record with the specified unique name, display name, prefix, and option value prefix. .PARAMETER XrmClient Xrm connector initialized to target instance. Use latest one by default. (Dataverse ServiceClient) .PARAMETER UniqueName Publisher unique name. Must be lowercase, no spaces. .PARAMETER DisplayName Publisher display name (friendly name). .PARAMETER Prefix Customization prefix for the publisher (e.g., "contoso"). Must be 2-8 lowercase letters. .PARAMETER OptionValuePrefix Option value prefix number for the publisher. Must be between 10000 and 99999. .PARAMETER Description Optional description for the publisher. .OUTPUTS Microsoft.Xrm.Sdk.EntityReference. Created publisher reference. .EXAMPLE $publisher = New-XrmPublisher -UniqueName "contoso" -DisplayName "Contoso Ltd" -Prefix "cts" -OptionValuePrefix 28100; .LINK https://learn.microsoft.com/en-us/power-apps/developer/data-platform/reference/entities/publisher #> function New-XrmPublisher { [CmdletBinding()] [OutputType([Microsoft.Xrm.Sdk.EntityReference])] param ( [Parameter(Mandatory = $false, ValueFromPipeline)] [Microsoft.PowerPlatform.Dataverse.Client.ServiceClient] $XrmClient = $Global:XrmClient, [Parameter(Mandatory = $true)] [ValidateNotNullOrEmpty()] [String] $UniqueName, [Parameter(Mandatory = $true)] [ValidateNotNullOrEmpty()] [String] $DisplayName, [Parameter(Mandatory = $true)] [ValidateNotNullOrEmpty()] [ValidatePattern("^[a-z]{2,8}$")] [String] $Prefix, [Parameter(Mandatory = $true)] [ValidateRange(10000, 99999)] [int] $OptionValuePrefix, [Parameter(Mandatory = $false)] [String] $Description ) begin { $StopWatch = [System.Diagnostics.Stopwatch]::StartNew(); Trace-XrmFunction -Name $MyInvocation.MyCommand.Name -Stage Start -Parameters ($MyInvocation.MyCommand.Parameters); } process { $attributes = @{ "uniquename" = $UniqueName; "friendlyname" = $DisplayName; "customizationprefix" = $Prefix; "customizationoptionvalueprefix" = $OptionValuePrefix; }; if ($PSBoundParameters.ContainsKey("Description")) { $attributes["description"] = $Description; } $publisher = New-XrmEntity -LogicalName "publisher" -Attributes $attributes; $publisherId = $XrmClient | Add-XrmRecord -Record $publisher; $publisherReference = New-XrmEntityReference -LogicalName "publisher" -Id $publisherId; $publisherReference; } end { $StopWatch.Stop(); Trace-XrmFunction -Name $MyInvocation.MyCommand.Name -Stage Stop -StopWatch $StopWatch; } } Export-ModuleMember -Function New-XrmPublisher -Alias *; |