Microsoft Teams Phone

How to find Teams Phone users without a number

List people with Teams Phone but no number with the Microsoft Teams PowerShell module, check each person in the Teams admin centre, or use Altivane's Teams Users and Phones report.

By the Published

To find Teams Phone users without a number, list the people enabled for Enterprise Voice with Get-CsOnlineUser and keep those whose LineURI is empty. Leave out resource accounts and soft-deleted users, which the cmdlet returns too. A number assigned in the last day may not show yet: Microsoft says enabling a user can take up to 24 hours.

Choose the method that fits the job
MethodBest fit
PowerShellA CSV of every person with Teams Phone and no number, with their Teams features.
Admin centreChecking 1 person's assigned number on their Account tab.
AltivaneRecommended for recurring reviews, with the people counted and rated beside the unassigned numbers.

Before you start

Use an account with a Teams role that manages phone numbers: Teams Administrator, Teams Communications Administrator or Teams Telephony Administrator. The module needs Windows PowerShell 5.1 or PowerShell 7.2 or later. The example passes no permission or scope: its access is the signed-in account's role.

Enterprise Voice is the Teams Phone setting EnterpriseVoiceEnabled; assigning a number turns it on, but it can also be on with no number. The examples read and export; they assign or remove no number and change nothing.

Option 1

Find Teams Phone users without a number with PowerShell

Install the module once, then connect and export the people with Enterprise Voice on and no number. The filter runs in Teams, so only voice-enabled user accounts come back.

PowerShell
# Install once, if the module is not already installed.
Install-Module MicrosoftTeams -Scope CurrentUser
PowerShell
$ErrorActionPreference = 'Stop'
Connect-MicrosoftTeams | Out-Null
try {
    $filter = 'EnterpriseVoiceEnabled -eq $true -and AccountType -eq ''User'''
    $users = @(Get-CsOnlineUser -Filter $filter)
    $report = @($users |
        Where-Object { -not $_.LineURI -and $null -eq $_.SoftDeletionTimestamp } |
        Sort-Object DisplayName |
        Select-Object DisplayName, UserPrincipalName, AccountEnabled,
            @{ Name = 'FeatureTypes'; Expression = { $_.FeatureTypes -join ', ' } })
    if ($report.Count -eq 0) {
        Write-Output "All $($users.Count) Teams Phone users have a number."
    } else {
        $report | Export-Csv -Path './teams-phone-users-without-number.csv' `
            -NoTypeInformation -Encoding utf8
        Write-Output "$($report.Count) of $($users.Count) Teams Phone users have no number."
    }
} finally {
    Disconnect-MicrosoftTeams
}

The CSV has 1 row for each person, by name. FeatureTypes shows what their licences give them: PhoneSystem for Teams Phone and CallingPlan where Microsoft provides the number. AccountType -eq 'User' leaves out resource accounts and guests; remove it to include resource accounts, such as those behind auto attendants.

Check a single person

Reconnect with Connect-MicrosoftTeams, then read 1 person's voice settings. The main export above disconnects when it finishes.

PowerShell
# Run while connected to Microsoft Teams. Replace the example account.
Get-CsOnlineUser -Identity 'person@example.com' |
    Select-Object DisplayName, EnterpriseVoiceEnabled, LineURI, FeatureTypes

A Direct Routing number shows in LineURI just as a Calling Plan number does. To see where a number comes from, read its NumberType with Get-CsPhoneNumberAssignment, such as CallingPlan or DirectRouting.

Option 2

Check a person's number in the admin centre

  1. Sign in to the Microsoft Teams admin centre for the correct tenant.
  2. Go to Users > Manage users. The Calling Plan column shows who has a Calling Plan licence.
  3. Select a person and open the Account tab.
  4. Read Assigned phone number. A person with no number shows the option to assign one instead.
  5. Leave the page without choosing Edit or Assign primary phone number, so nothing changes.

This suits checking 1 or 2 people, such as a new starter. It does not suit a review of the whole tenant, since each person's number is on their own page.

Common questions

Why does someone with a new number still show up?

Microsoft says it can take up to 24 hours for a user to be enabled after a number is assigned. Run the check again the next day before you follow it up.

Why are soft-deleted users in the output?

Without -Identity, Get-CsOnlineUser includes soft-deleted users, with SoftDeletionTimestamp set. The script leaves out any row where it has a value.

Where do I find numbers to give them?

Numbers the tenant holds but has not assigned are listed by Get-CsPhoneNumberAssignment. To find them, see how to find unassigned phone numbers in Microsoft Teams.

Microsoft references

Technical references checked on 6 November 2026. The example scripts have been reviewed and syntax checked; they have not been run against a live tenant.

Talk to us about Altivane

Questions, or pricing? Get in touch.

Contact us