Private/ADLookups/_FindTabLookup.ps1

function _FindTabLookup {
    $ADLookups_FindTabInformationTextBox.Text = ''
    $ObjectToLookUp = $ADLookups_FindTabQueryTextTextBox.Text
    $ObjectTypeToCheck = $ADLookups_FindTabObjectTypeComboBox.Text
    $SearchStyle = $ADLookups_FindTabSearchStyleComboBox.Text

    try {
        switch ($ObjectTypeToCheck) {
            'User' {
                if ($ObjectToLookUp.length -ge 1) {
                    $Output = _GetUserName -NameToSearch $ObjectToLookUp -SearchStyle $SearchStyle | Select-Object SamAccountName, Department, EmailAddress, @{Name = 'Status'; Expression = { if (!($_.Enabled)) {'Disabled'} else {'Enabled'} }}, DistinguishedName | Sort-Object SamAccountName
                }
                else {
                    $ADLookups_FindTabInformationTextBox.Text = 'Type at least 1 character to search.'
                }
                $Count = ($Output | Measure-Object).count
                if ($Count -ge 20) {
                    $ADLookups_FindTabInformationTextBox.Text = 'Returning the first 20 results.'
                }
                else {
                    $ADLookups_FindTabInformationTextBox.Text += "Found $Count items."
                }

                if ($Count -eq 1) {
                    $ADLookups_FindTabInformationTextBox.Text += " Username copied to the 'General User' tab."
                    $ADLookups_UserTabSamAccountNameComboBox.SelectedItem = $Output.SamAccountName
                }
            }
            'Computer' {
                if ($ObjectToLookUp.length -ge 1) {
                    $Output = _GetComputerName -NameToSearch $ObjectToLookUp -SearchStyle $SearchStyle | Select-Object Name, created, IPv4Address | Sort-Object Name
                }
                else {
                    $ADLookups_FindTabInformationTextBox.Text = 'Type at least 1 character to search.'
                }
                $Count = ($Output | Measure-Object).count
                if ($Count -ge 20) {
                    $ADLookups_FindTabInformationTextBox.Text = 'Returning the first 20 results.'
                }
                else {
                    $ADLookups_FindTabInformationTextBox.Text += "Found $Count items."
                }

                if ($Count -eq 1) {
                    $ADLookups_FindTabInformationTextBox.Text += " Hostname copied to the 'Computer' tab."
                    $ADLookups_ComputerTabHostNameComboBox.SelectedItem = $Output.Name
                }
            }
            'Group' {
                if ($ObjectToLookUp.length -ge 1) {
                    $Output = _GetGroupName -NameToSearch $ObjectToLookUp -SearchStyle $SearchStyle | Select-Object Name, SamAccountName, Description | Sort-Object Name
                }
                else {
                    $ADLookups_FindTabInformationTextBox.Text = 'Type at least 1 character to search.'
                }

                $Count = ($Output | Measure-Object).count
                if ($Count -ge 20) {
                    $ADLookups_FindTabInformationTextBox.Text = 'Returning the first 20 results.'
                }
                else {
                    $ADLookups_FindTabInformationTextBox.Text += "Found $Count items."
                }

                if ($Count -eq 1) {
                    $ADLookups_FindTabInformationTextBox.Text += " Group name copied to the 'Group' tab."
                    $ADLookups_GroupTabSamAccountNameComboBox.SelectedItem = $Output.Name
                }
            }
            'Service Account' {
                if ($ObjectToLookUp.length -ge 1) {
                    $Output = _GetServiceAccount -NameToSearch $ObjectToLookUp -SearchStyle $SearchStyle | Select-Object Name, SamAccountName, Description | Sort-Object Name
                }
                else {
                    $ADLookups_FindTabInformationTextBox.Text = 'Type at least 1 character to search.'
                }
                $Count = ($Output | Measure-Object).count
                if ($Count -ge 20) {
                    $ADLookups_FindTabInformationTextBox.Text = 'Returning the first 20 results.'
                }
                else {
                    $ADLookups_FindTabInformationTextBox.Text += "Found $Count items."
                }

            }
            'Contact' {
                if ($ObjectToLookUp.length -ge 1) {
                    $Output = _GetContactName -NameToSearch $ObjectToLookUp -SearchStyle $SearchStyle | Sort-Object Name
                }
                else {
                    $ADLookups_FindTabInformationTextBox.Text = 'Type at least 1 character to search.'
                }
                $Count = ($Output | Measure-Object).count
                if ($Count -ge 20) {
                    $ADLookups_FindTabInformationTextBox.Text = 'Returning the first 20 results.'
                }
                else {
                    $ADLookups_FindTabInformationTextBox.Text += "Found $Count items."
                }
            }
            "User's Computer" {
                if ($ObjectToLookUp.length -ge 1) {
                    # TODO make sure this is returning unique results.
                    $Output = _GetUserLocationAndHostname -NameToSearch $ObjectToLookup | Sort-Object Hostname
                }
                else {
                    $ADLookups_FindTabInformationTextBox.Text = 'Type at least 1 character to search.'
                }
            }
            default {
                $Output = 'Invalid Option'
            }
        }

    }
    catch {
        $Output = "ERROR!`n$_"
    }

    $OutputObject = @()
    foreach ($Object in $Output) {
        $OutputObject += $Object
    }
    $ADLookups_FindTabDataGrid.DataContext = $OutputObject
}