completers/userSam.ps1

$userSam = {
    param(
        $commandName,
        $parameterName,
        $wordToComplete,
        $commandAst,
        $fakeBoundParameter
    )

    $fakeBoundParameter.remove('identity')
    $filter = "{0}*" -f $wordToComplete
    
    Get-ADUser @fakeBoundParameter -filter { samaccountname -like $filter } |
      ForEach-Object {
          $_ | Return-UserObject
      }
}

function Return-UserObject {
    [CMDLetBinding()]
    param(
        [Parameter(ValueFromPipeline)]
        $user
    )

    BEGIN {
        $completers = $script:config.FancyCompleters.user
    }

    PROCESS {
        $_ | Where-Object {
            if ($script:config.ShowDisabled) {
                $_
            } else {
                $_.enabled
            }
        } | ForEach-Object {
            if ($script:config.UseFancyCompleters) {
                $listText = & $completers.ListText
                $ToolTip  = & $completers.ToolTip
                New-Object System.Management.Automation.CompletionResult(
                    $_.samaccountname,
                    $ListText,
                    'ParameterValue',
                    $ToolTip
                )
            } else {
                New-Object System.Management.Automation.CompletionResult(
                    $_.samaccountname
                )
            }
        }
    }
}

# Enable for *-ADAccount and *-ADUser
Get-Command *-ADAccount | ForEach-Object {
    Register-ArgumentCompleter -CommandName $_ -Parameter Identity -ScriptBlock $userSam
}
Get-Command *-ADUser | ForEach-Object {
    Register-ArgumentCompleter -CommandName $_ -Parameter Identity -ScriptBlock $userSam
}