src/Solutions/Get-XrmPublisher.ps1

<#
    .SYNOPSIS
    Retrieve publisher record from Microsoft Dataverse.

    .DESCRIPTION
    Get a publisher by its unique name with expected columns.

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

    .PARAMETER PublisherUniqueName
    Publisher unique name to retrieve.

    .PARAMETER Columns
    Specify expected columns to retrieve. (Default : id, uniquename, friendlyname, customizationprefix, customizationoptionvalueprefix, description)

    .OUTPUTS
    Microsoft.Xrm.Sdk.Entity. Publisher record.

    .EXAMPLE
    $publisher = Get-XrmPublisher -PublisherUniqueName "contoso";

    .EXAMPLE
    $publisher = Get-XrmPublisher -PublisherUniqueName "contoso" -Columns "publisherid", "friendlyname";

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

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

        [Parameter(Mandatory = $true)]
        [ValidateNotNullOrEmpty()]
        [String]
        $PublisherUniqueName,

        [Parameter(Mandatory = $false)]
        [ValidateNotNullOrEmpty()]
        [String[]]
        $Columns = @("publisherid", "uniquename", "friendlyname", "customizationprefix", "customizationoptionvalueprefix", "description")
    )
    begin {
        $StopWatch = [System.Diagnostics.Stopwatch]::StartNew();
        Trace-XrmFunction -Name $MyInvocation.MyCommand.Name -Stage Start -Parameters ($MyInvocation.MyCommand.Parameters);
    }
    process {
        $publisher = $XrmClient | Get-XrmRecord -LogicalName "publisher" -AttributeName "uniquename" -Value $PublisherUniqueName -Columns $Columns;
        $publisher;
    }
    end {
        $StopWatch.Stop();
        Trace-XrmFunction -Name $MyInvocation.MyCommand.Name -Stage Stop -StopWatch $StopWatch;
    }
}

Export-ModuleMember -Function Get-XrmPublisher -Alias *;