src/Views/Test-XrmView.ps1

<#
    .SYNOPSIS
    Validate a saved query (view) in Microsoft Dataverse.

    .DESCRIPTION
    Check if a saved query (view) definition is valid using the ValidateSavedQuery SDK action.

    .PARAMETER XrmClient
    Xrm connector initialized to target instance. Use latest one by default. (Dataverse ServiceClient)

    .PARAMETER ViewId
    Guid of the savedquery record to validate.

    .OUTPUTS
    Microsoft.Xrm.Sdk.OrganizationResponse. The ValidateSavedQuery response.

    .EXAMPLE
    $result = Test-XrmView -ViewId $viewId;

    .LINK
    https://learn.microsoft.com/en-us/power-apps/developer/data-platform/webapi/reference/validatesavedquery
#>

function Test-XrmView {
    [CmdletBinding()]
    [OutputType([Microsoft.Xrm.Sdk.OrganizationResponse])]
    param
    (
        [Parameter(Mandatory = $false, ValueFromPipeline)]
        [Microsoft.PowerPlatform.Dataverse.Client.ServiceClient]
        $XrmClient = $Global:XrmClient,

        [Parameter(Mandatory = $true)]
        [ValidateNotNullOrEmpty()]
        [Guid]
        $ViewId
    )
    begin {
        $StopWatch = [System.Diagnostics.Stopwatch]::StartNew();
        Trace-XrmFunction -Name $MyInvocation.MyCommand.Name -Stage Start -Parameters ($MyInvocation.MyCommand.Parameters);
    }
    process {
        $request = New-XrmRequest -Name "ValidateSavedQuery";

        $viewEntityCollection = New-XrmEntityCollection;
        $viewEntity = New-XrmEntity -LogicalName "savedquery";
        $viewEntity.Id = $ViewId;
        $viewEntityCollection.Entities.Add($viewEntity);

        $request | Add-XrmRequestParameter -Name "FetchXml" -Value "" | Out-Null;
        $request | Add-XrmRequestParameter -Name "QueryType" -Value 0 | Out-Null;

        $response = $XrmClient | Invoke-XrmRequest -Request $request;
        $response;
    }
    end {
        $StopWatch.Stop();
        Trace-XrmFunction -Name $MyInvocation.MyCommand.Name -Stage Stop -StopWatch $StopWatch;
    }
}

Export-ModuleMember -Function Test-XrmView -Alias *;