Public/Get-ADUserBySam.ps1

function Get-ADUserBySam {
    [CmdletBinding(SupportsShouldProcess)]
    Param (
    [Parameter(Mandatory,ValueFromPipeline)]
    [string]$Sam,
    [string]$Domain,
    [object]$Creds
    )

    $Params = @{
    Filter        = {SamAccountName -eq $Sam}
    ErrorAction    = "SilentlyContinue"
    Properties      = "*"
    }

    if ($Domain -And $Creds) {
    if ($ADUser = Get-ADUser -Server $Domain -Credential $Creds @Params) {
        return $ADUser
    } else {
        Write-Verbose "Couldn't find $Sam in AD."
    }
    } elseif ($ADUser = Get-ADUser -Server $ADGlobalCatalog @Params) {
    $ADUser | Get-ADUserAllProperties
    } else {
    Write-Verbose "Couldn't find $Sam in AD."
    }
}