src/Solutions/Customization/Dashboards/Set-XrmDashboard.ps1
|
<# .SYNOPSIS Update a dashboard in Microsoft Dataverse. .DESCRIPTION Update an existing systemform record (dashboard). Delegates to Set-XrmForm. .PARAMETER XrmClient Xrm connector initialized to target instance. Use latest one by default. (Dataverse ServiceClient) .PARAMETER DashboardReference EntityReference of the systemform (dashboard) to update. .PARAMETER Name Updated dashboard display name. .PARAMETER Labels Hashtable of language code to display name. Alternative to -Name. The stored 'name' is resolved from -LanguageCode (fallback: lowest language code), and every provided language is persisted as a real translation via SetLocLabels (delegated to Set-XrmForm). -Name takes precedence for the base 'name' if both are provided. .PARAMETER LanguageCode Language code used to pick the stored 'name' from -Labels. Default: 1033. .PARAMETER FormXml Updated dashboard form XML definition. .PARAMETER Description Updated description. .PARAMETER SolutionUniqueName Unmanaged solution unique name. When provided, the updated dashboard is automatically added to this solution. .OUTPUTS Microsoft.Xrm.Sdk.EntityReference. Reference to the updated systemform record. .EXAMPLE Set-XrmDashboard -DashboardReference $dashRef -Name "Updated Sales Dashboard"; Set-XrmDashboard -DashboardReference $dashRef -FormXml $newXml -SolutionUniqueName "MySolution"; #> function Set-XrmDashboard { [CmdletBinding()] [OutputType([Microsoft.Xrm.Sdk.EntityReference])] param ( [Parameter(Mandatory = $false, ValueFromPipeline)] [Microsoft.PowerPlatform.Dataverse.Client.ServiceClient] $XrmClient = $Global:XrmClient, [Parameter(Mandatory = $true)] [ValidateNotNull()] [Microsoft.Xrm.Sdk.EntityReference] $DashboardReference, [Parameter(Mandatory = $false)] [string] $Name, [Parameter(Mandatory = $false)] [Hashtable] $Labels, [Parameter(Mandatory = $false)] [int] $LanguageCode = 1033, [Parameter(Mandatory = $false)] [string] $FormXml, [Parameter(Mandatory = $false)] [string] $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 { $params = @{ XrmClient = $XrmClient; FormReference = $DashboardReference; }; if ($PSBoundParameters.ContainsKey('Name')) { $params["Name"] = $Name; } if ($PSBoundParameters.ContainsKey('Labels')) { $params["Labels"] = $Labels; $params["LanguageCode"] = $LanguageCode; } if ($PSBoundParameters.ContainsKey('FormXml')) { $params["FormXml"] = $FormXml; } if ($PSBoundParameters.ContainsKey('Description')) { $params["Description"] = $Description; } if ($PSBoundParameters.ContainsKey('SolutionUniqueName')) { $params["SolutionUniqueName"] = $SolutionUniqueName; } Set-XrmForm @params; } end { $StopWatch.Stop(); Trace-XrmFunction -Name $MyInvocation.MyCommand.Name -Stage Stop -StopWatch $StopWatch; } } Export-ModuleMember -Function Set-XrmDashboard -Alias *; |