To find unassigned phone numbers in Microsoft Teams, list the tenant's telephone numbers and keep those whose assignment status is Unassigned. Direct Routing numbers appear only if they were uploaded to the tenant's number inventory. An unassigned number can still be blocked from assignment, so check that before giving it to someone.
| Method | Best fit |
|---|---|
| PowerShell | A CSV of every unassigned number with its type, location and activation state. |
| Admin centre | A quick look at the Phone numbers list filtered to Unassigned, or at 1 number. |
| Altivane | Recommended for recurring reviews, with the unassigned numbers counted and rated against a threshold. |
Before you start
Use an account that can manage phone numbers: Teams Telephony Administrator, Teams Communications Administrator or Teams Administrator, with a Teams licence. The PowerShell 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.
The Teams admin centre shows Voice only when the tenant has an Enterprise E5 licence (or Teams Premium), a Teams Phone add-on licence or an Audio Conferencing add-on licence. The examples read and export; they change nothing.
Option 1
Find unassigned phone numbers with PowerShell
Install the module once, then connect and export every number with an assignment status of Unassigned.
# Install once, if the module is not already installed.
Install-Module MicrosoftTeams -Scope CurrentUser$ErrorActionPreference = 'Stop'
Connect-MicrosoftTeams | Out-Null
try {
$query = @{ PstnAssignmentStatus = 'Unassigned'; Top = 1000 }
$skip = 0
$numbers = @()
do {
$batch = @(Get-CsPhoneNumberAssignment @query -Skip $skip)
$numbers += $batch
$skip += $query.Top
} while ($batch.Count -eq $query.Top)
if ($numbers.Count -eq 0) {
Write-Output 'The tenant has no unassigned phone numbers.'
} else {
$numbers |
Select-Object TelephoneNumber, NumberType, ActivationState, City, IsoCountryCode,
NumberSource, AssignmentBlockedState,
@{ Name = 'Capability'; Expression = { $_.Capability -join ', ' } } |
Export-Csv -Path './unassigned-phone-numbers.csv' -NoTypeInformation -Encoding utf8
Write-Output "$($numbers.Count) unassigned phone numbers."
}
} finally {
Disconnect-MicrosoftTeams
}The cmdlet returns 500 numbers unless told otherwise, so the script reads 1,000 at a time until a page comes back short. Add -CapabilitiesContain UserAssignment to keep only numbers that can be given to people, or -ActivationState Activated to leave out numbers still being set up. AssignmentBlockedState needs module version 7.5.0 or later; Install-Module installs the latest.
Check a single number
Reconnect with Connect-MicrosoftTeams, then read 1 number. The main export above disconnects when it finishes.
# Run while connected to Microsoft Teams. Replace the example number.
Get-CsPhoneNumberAssignment -TelephoneNumber '+61255550100' |
Select-Object TelephoneNumber, PstnAssignmentStatus, AssignedPstnTargetId, ActivationStatePstnAssignmentStatus says what holds the number: Unassigned, UserAssigned, ConferenceAssigned, VoiceApplicationAssigned, ThirdPartyAppAssigned or PolicyAssigned.
Option 2
Review unassigned numbers in the admin centre
- Sign in to the Microsoft Teams admin centre for the correct tenant.
- Go to Voice > Phone numbers.
- Select the filter icon on the Assignment status column and choose Unassigned.
- For more detail, use the Filter pane to narrow the list by activation state, number type or location.
- Read the rows. Edit and Change usage are for changing a number, so use only the list.
This suits a quick look at a tenant you already have open. For a list to keep and compare, use PowerShell or Altivane.
Option 3 ยท Recommended for recurring reviews
Find unassigned phone numbers with Altivane
- Open Altivane and choose the tenant.
- Build the tenant's documents with the Teams Users and Phones scorecard report in full; builds start it on Summary, which counts the numbers but does not list them.
- Open the tenant's Excel workbook and read Unassigned Phone Numbers: Number, Type, Status, Assigned to, Category, Activation, Capabilities, City, Country and Source.
- Read Teams Users Summary for Unassigned phone numbers alongside Phone numbers and Teams Phone users without a number, and the scorecard for the rating.
The report needs a tenant signed in with a certificate, and its app registration needs TeamsTelephoneNumber.. Where the numbers cannot be read, the summary says Not read and the table is left out. The scorecard marks the count Warning at 1 or more and Critical at 10 or more until you change the limits. The build also writes the tenant's Word report. The Phone Numbers report lists every number with its status and assignment.
Common questions
Why is a number I expect not on the list?
It is probably assigned to something other than a person. A number held by a conference bridge, a voice app such as an auto attendant or call queue, or a policy has its own status and is not unassigned. A Direct Routing number is missing until you upload it to the tenant's number inventory.
Why does an unassigned number say it is blocked?
An assignment block stops the number being given to anyone. AssignmentBlockedState is BlockedForever or BlockedUntil, and BlockedUntil clears itself on the date in AssignmentBlockedUntil. To lift a block early, an administrator runs Remove-CsPhoneNumberAssignmentBlock for that number.
What about people with Teams Phone but no number?
Altivane lists those people in Teams Phone Users Without a Number, beside the unassigned numbers. For the licence side, see how to find unused licences in Microsoft 365.
Microsoft references
Technical references checked on 5 October 2026. The example scripts have been reviewed and syntax checked; they have not been run against a live tenant.
- Get-CsPhoneNumberAssignment reference
- Remove-
Cs Phone Number Assignment Block reference - Disconnect-MicrosoftTeams reference
- Install Microsoft Teams PowerShell module
- See a list of telephone numbers in your organization
- Use Microsoft Teams administrator roles to manage Teams
- List numberAssignments in Microsoft Graph