Private/ADLookups/_GetUserName.ps1

function _GetUserName {
    param (
        [parameter(Mandatory = $true)]
        [string]$NameToSearch,

        [parameter(Mandatory = $true)]
        [ValidateSet('*Search', '*Search*', 'Search*')]
        [string]$SearchStyle
    )

    switch ($SearchStyle) {
        '*Search' {
            $Query = "*$NameToSearch"
        }
        '*Search*' {
            $Query = "*$NameToSearch*"
        }
        'Search*' {
            $Query = "$NameToSearch*"
        }
    }

    if ($null -eq $AllUsers) {
        Return "Go to the File menu and click 'Update Object Cache'."
    }
    else {
        $UserName = @()
        $UserName += $AllUsers | Where-Object SamAccountName -Like $Query
        $UserName += $AllUsers | Where-Object DisplayName -Like $Query
        $UserName += $AllUsers | Where-Object givenName -Like $Query
        $UserName += $AllUsers | Where-Object Surname -Like $Query
        $UserName += $AllUsers | Where-Object Name -Like $Query
        Return $UserName | Select-Object -Unique -First 20
    }
}