src/Metadata/Set-XrmAutoNumberSeed.ps1

<#
    .SYNOPSIS
    Set the auto-number seed for a column.

    .DESCRIPTION
    Set the next auto-number value for an auto-number column using the SetAutoNumberSeed SDK message.

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

    .PARAMETER EntityLogicalName
    Logical name of the entity containing the auto-number column.

    .PARAMETER AttributeLogicalName
    Logical name of the auto-number column.

    .PARAMETER Value
    The new seed value (next number to be assigned).

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

    .EXAMPLE
    Set-XrmAutoNumberSeed -EntityLogicalName "new_invoice" -AttributeLogicalName "new_invoicenumber" -Value 10000;

    .LINK
    https://learn.microsoft.com/en-us/power-apps/developer/data-platform/create-auto-number-attributes
#>

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

        [Parameter(Mandatory = $true)]
        [ValidateNotNullOrEmpty()]
        [string]
        $EntityLogicalName,

        [Parameter(Mandatory = $true)]
        [ValidateNotNullOrEmpty()]
        [string]
        $AttributeLogicalName,

        [Parameter(Mandatory = $true)]
        [long]
        $Value
    )
    begin {
        $StopWatch = [System.Diagnostics.Stopwatch]::StartNew();
        Trace-XrmFunction -Name $MyInvocation.MyCommand.Name -Stage Start -Parameters ($MyInvocation.MyCommand.Parameters);
    }
    process {
        $request = New-XrmRequest -Name "SetAutoNumberSeed";
        $request | Add-XrmRequestParameter -Name "EntityName" -Value $EntityLogicalName | Out-Null;
        $request | Add-XrmRequestParameter -Name "AttributeName" -Value $AttributeLogicalName | Out-Null;
        $request | Add-XrmRequestParameter -Name "Value" -Value $Value | 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 Set-XrmAutoNumberSeed -Alias *;

Register-ArgumentCompleter -CommandName Set-XrmAutoNumberSeed -ParameterName "EntityLogicalName" -ScriptBlock {
    param($CommandName, $ParameterName, $WordToComplete, $CommandAst, $FakeBoundParameters)
    $validLogicalNames = Get-XrmEntitiesLogicalName;
    return $validLogicalNames | Where-Object { $_ -like "$wordToComplete*" };
}