src/Customization/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 FormXml
    Updated dashboard form XML definition.

    .PARAMETER Description
    Updated description.

    .OUTPUTS
    Microsoft.Xrm.Sdk.EntityReference. Reference to the updated systemform record.

    .EXAMPLE
    Set-XrmDashboard -DashboardReference $dashRef -Name "Updated Sales Dashboard";
#>

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)]
        [string]
        $FormXml,

        [Parameter(Mandatory = $false)]
        [string]
        $Description
    )
    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('FormXml')) {
            $params["FormXml"] = $FormXml;
        }
        if ($PSBoundParameters.ContainsKey('Description')) {
            $params["Description"] = $Description;
        }

        Set-XrmForm @params;
    }
    end {
        $StopWatch.Stop();
        Trace-XrmFunction -Name $MyInvocation.MyCommand.Name -Stage Stop -StopWatch $StopWatch;
    }
}

Export-ModuleMember -Function Set-XrmDashboard -Alias *;