Localizar dispositivos Salas do Teams com licenças sem suporte

As contas de recurso que têm apenas licenças de usuário ou licenças de Dispositivo Compartilhado do Microsoft Teams atribuídas a elas não têm suporte para uso com dispositivos Salas do Microsoft Teams. As contas de recurso usadas com Salas do Teams dispositivos precisam receber uma das seguintes licenças:

  • Salas Microsoft Teams Pro
  • Salas do Microsoft Teams Básico
  • Salas do Microsoft Teams Padrão (herdado)
  • Salas do Microsoft Teams Premium (herdado)

Importante

Não há suporte para licenças de usuário para uso com dispositivos de reunião. As licenças de usuário atribuídas a dispositivos Salas do Teams precisam ser substituídas por uma licença de Salas do Teams aprovada. A partir de 30 de setembro de 2023, dispositivos de reunião que não têm uma licença de Salas de Equipe serão impedidos de entrar até que uma licença de Salas do Teams seja atribuída.

Além disso, as licenças de dispositivos compartilhados do Microsoft Teams não têm suporte e não funcionam com dispositivos Salas do Teams. Salas do Teams dispositivos só devem ser atribuídos Salas do Teams licenças Básicas ou Salas Teams Pro (Salas do Teams licenças herdadas também são válidas).

Você tem algumas opções para verificar se as contas de recurso inseridas em seu Salas do Teams dispositivos têm uma licença Salas do Teams. Se você tiver apenas alguns dispositivos Salas do Teams, use as etapas em Verificar a licença de alguns dispositivos Salas do Teams. Se você tiver mais de alguns dispositivos Salas do Teams, use as etapas em Verificar a licença de vários dispositivos Salas do Microsoft Teams.

Para obter informações sobre Salas do Teams licenciamento, consulte Salas do Microsoft Teams licenças.

Verificar a licença de alguns dispositivos Salas do Teams

Para um pequeno número de dispositivos, você pode ver qual licença seus dispositivos têm acessando dispositivos teams no centro de administração do Teams e selecionando a categoria de dispositivo (Salas do Teams no Windows, Salas do Teams no Android ou Surface Hubs) que você deseja ver.

Por exemplo, se você selecionar dispositivos > do Teams Salas do Teams no Windows, verá a imagem a seguir. A coluna Licença mostra a licença Salas do Teams atribuída a cada dispositivo.

Salas do Teams lista de inventário com foco em licenças Standard, Pro e Pro (Avaliação).

Dispositivos que têm a licença Salas Teams Pro podem acessar todos os recursos de seus dispositivos Salas do Teams. Dispositivos com outras licenças Salas do Teams podem acessar um subconjunto desses recursos. Você pode ver quais recursos estão disponíveis para cada licença em Salas do Teams comparação de recursos básico e Salas Teams Pro.

Verificar a licença de vários dispositivos Salas do Microsoft Teams

Verificar licenças para dispositivos Salas do Teams um de cada vez pode ser demorado. Para facilitar esse processo, estamos disponibilizando um script de exemplo que verifica as licenças de todos os seus dispositivos Salas do Teams. O script fornece uma lista das contas de recurso associadas aos dispositivos Salas do Teams, organizados por tipo de licença. Contas de recurso com licenças que não têm suporte com Salas do Teams dispositivos são agrupadas para sua revisão. Se as contas de recurso associadas a Salas do Teams dispositivos tiverem um tipo de licença sem suporte, você precisará alterá-la para uma licença com suporte antes de 1º de julho de 2023.

Dê uma olhada neste vídeo curto para ver como usar o script de exemplo para auditar suas licenças:

<#PSScriptInfo
.VERSION 0.25
 
.GUID 
 
.AUTHOR Peter Lurie, Mark Hodge
 
.COMPANYNAME Microsoft
 
.COPYRIGHT (c) 2022-2023 Peter Lurie & Mark Hodge
 
.TAGS Microsoft Teams Room System Surface Hub MEETING_ROOM for Resource Accounts
 
.LICENSEURI   https://creativecommons.org/licenses/by/4.0/?ref=chooser-v1
 
.PROJECTURI 
 
.ICONURI 
 
.EXTERNALMODULEDEPENDENCIES 
 
.REQUIREDSCRIPTS 
 
.EXTERNALSCRIPTDEPENDENCIES 
 
.RELEASENOTES
 
Version 0.23:  Updated to improve support for CSV output 
 
Version 0.24:  updating file/path UI
 
Version 0.25:  udpated to to filter on the server vs. local per feedback  
 
#>
 
 
 
<#
 
.SYNOPSIS
 
Reports out the list of resource accounts that have assigned licenses, highlighting the ones with Teams Meeting Room liceses in green
 
.DESCRIPTION
 
This script uses Graph Powershell & EXO to check for resource accounts and their licenses. 
 
.PARAMETER 
 
None
 
.NOTES
 
author: Peter Lurie
 
created: 2022-05-10
 
editied: 2023-05-30
 
#>
 
 
 
Function Get-SaveFilePath ([string]$initialDirectory) {  #prompts for filename and path for exporting to CSV, if needed
 
 
 
      Add-Type -AssemblyName System.Windows.Forms
 
      $SaveFileDialog = New-Object System.Windows.Forms.SaveFileDialog
 
      $SaveInitialPath = ".\"
 
      $SaveFileName = "TeamsMeetingRoomLicenses.csv"
 
    $SaveFileDialog.initialDirectory = $SaveInitialPath #Sets current starting path
 
    $SaveFileDialog.filter = "CSV (*.csv)| *.csv"    #Restricts to CSV by default
 
      $SaveFileDialog.FileName = $SaveFileName                   #Default filename 
 
    
 
 $SaveFileDialog.ShowDialog()   #actually asks for the filepath
 
      return $SaveFileDialog.filename #Returns filepath for writing to CSV
 
}
 
 
 
Clear-Host
 
Write-Host
 
Write-Host "Welcome to Meeting Room License Checker." -ForegroundColor Green
 
Write-Host
 
Write-Host "This tool will look through your Exchange Online and AAD to find Resource Account Mailbox UPNs."
 
Write-host "It will then report which resource accounts have Teams Room licenses, which have no license, and which have some other licenses"
 
Write-host "This is ver 0.25." 
 
Write-Host
 
 
 
 
 
#Setup for Graph
 
Write-Host "Loading Microsoft Graph Modules" 
 
If (!(Get-Module -listavailable | Where-Object {$_.name -like "*Microsoft.Graph.Users*"})) 
 
      { 
 
             Install-Module Microsoft.Graph.Users  #-ErrorAction SilentlyContinue 
 
      } 
 
Else 
 
      {     Import-Module Microsoft.Graph.Users  #-ErrorAction SilentlyContinue 
 
      } 
 
Try
 
      {     write-host "Getting ready to connect to the Microsoft Graph" 
 
        Connect-MgGraph -Scopes "User.Read.All"
 
             write-host "Connected successfully the Microsoft Graph" -ForegroundColor Green
 
      }
 
Catch
 
      {     write-host "Unable to connect to your Microsoft Graph Environment" -ForegroundColor Red
 
      }
 
 
 
Write-Host 
 
Write-Host "Getting ready to connect to Exchange Online." -ForegroundColor Green
 
If (!(Get-Module -listavailable | Where-Object {$_.name -like "*ExchangeOnlineManagement*"})) 
 
      {     Install-Module ExchangeOnlineManagement  -ErrorAction SilentlyContinue 
 
      } 
 
Else 
 
      {     Import-Module ExchangeOnlineManagement  -ErrorAction SilentlyContinue 
 
      } 
 
Try
 
      {     write-host "Connecting to your Exchange Online instance"
 
        Connect-ExchangeOnline  -ShowBanner:$false #Note if using GCC, DOD, or a soverign cloud, see docs for this command for the correct -ExchangeEnvironmentName.  Default is Commerical cloud
 
             write-host "Connected successfully to your Exchange Online"  -ForegroundColor Green
 
      }
 
Catch
 
      {     write-host "Unable to connect to your Exchange Online Environment"  -ForegroundColor Red
 
      }
 
 
 
Write-Host 
 
Write-Host "Starting to search for Resource Account Mailbox UPNs and their licenses..." -ForegroundColor Green
 
$StartElapsedTime = $(get-date)
 
[System.Collections.ArrayList]$No_License = @()
 
[System.Collections.ArrayList]$MTR_Premium_License = @()    # Also includes MMR1 license
 
[System.Collections.ArrayList]$MeetingRoom_License = @()   #Teams Meeting Room Standard license
 
[System.Collections.ArrayList]$MeetingRoomPro_License = @()  #Optimal license
 
[System.Collections.ArrayList]$MeetingRoomBasic_License = @()  #Basic license does max out at 25 licenses/tenant
 
[System.Collections.ArrayList]$MeetingRoomOther_License = @()  #Licenses OTHER than what should be applied to a Teams Room Resource Account
 
$Report = [System.Collections.Generic.List[Object]]::new()
 
 
 
#Updated to filter server side and not client side.  See next line for new filter. 
 
#$Room_UPNs = get-mailbox | Where-Object {$_.recipientTypeDetails -eq "roomMailbox"} | Select-Object DisplayName, PrimarySmtpAddress, ExternalDirectoryObjectId  
 
 
 
$Room_UPNs = Get-ExoMailbox -Filter {recipientTypeDetails -eq "RoomMailbox" } -ResultSize unlimited | Select-Object DisplayName, PrimarySmtpAddress, ExternalDirectoryObjectId 
 
Write-Host $Room_UPNs.Length " were found." -ForegroundColor Green
 
Write-Host "Note that resource accounts can contain 0 or multiple licenses. As such, the total of all licenses discovered may be different than the number of resource accounts" -ForegroundColor Yellow
 
Write-Host 
 
 
 
$i,$x = 0,$Room_UPNs.count   #Setup for counting devices
 
if ($null -eq $x) {$x = 1}   #run through the loop at least once to print results, otherwise will get a divide/0 error
 
# Note that resource accounts can contain multiple licenese.  As such, the sum of all licenses may exceed the number of resource accounts
 
 
 
ForEach ($UPN in $Room_UPNs){
 
    $i++
 
      Write-Progress -activity "Searching for resource accounts with licenses..." -status "Scanned: $i of $x" 
 
    $UPN_license =  Get-MgUserLicenseDetail -UserID $UPN.ExternalDirectoryObjectId | Select-Object -ExpandProperty SkuPartNumber
 
    $temp = [pscustomobject]@{'DisplayName'=$UPN.DisplayName;'UPN'=$UPN.PrimarySmtpAddress; 'Licenses'=$UPN_license -join ", "} #pulls out the license from a UPN
 
 
 
    if ($null -eq $UPN_license) {$No_License.add($temp) | Out-Null}  #find resource accounts without licenses
 
 
 
      if ($UPN_license -like "MTR_PREM*" -or $UPN_license -like "MMR_P*" ) {$MTR_Premium_License.add($temp) | Out-Null}   #find resource accounts with legacy MTR Premium  
 
    if ($UPN_license -like "MEETING_ROOM*") {$MeetingRoom_License.add($temp) | Out-Null}   #find resource accounts with legacy Teams Room Standard licenses
 
    if ($UPN_license -like "Microsoft_Teams_Rooms_Pro*") {$MeetingRoomPro_License.add($temp) | Out-Null}   #find resource accounts with meeting room pro licenses
 
      if ($UPN_license -like "Microsoft_Teams_Rooms_Basic*") {$MeetingRoomBasic_License.add($temp) | Out-Null}   #find resource accounts with meeting room basic licenses
 
 
 
    if (!(($UPN_license -like "MEETING_ROOM*" ) -or ($UPN_license -like "Microsoft_Teams_Rooms_*" ) -or ($UPN_License -like "MTR_PREM") -or ($UPN_License -like "MMR_P1")-or ($null -eq $UPN_license) ))  {$MeetingRoomOther_License.add($temp) | Out-Null}  #If there are resource accounts that have other licenses, add them too.
 
 
 
    $Report.Add($temp)   #Creating the file for the CSV, if needed later
 
 
 
    $temp = $null
 
      }
 
 
 
   
 
 
 
    Write-Progress -Completed -activity "Searching for resource accounts with licenses..."
 
 
 
Write-Host
 
 
 
Write-Host $No_License.count "Resource accounts without any licenses.  (Typically these would be bookable rooms without any Teams Meeting technology or resource accounts yet to be licensed.)" -ForegroundColor Cyan
 
$No_License | Sort-Object UPN | Format-Table  
 
Write-Host 
 
Write-Host 
 
Write-Host $MeetingRoom_License.count "resource accounts with Legacy Teams Room Standard licenses. (Typically, these licenses should be upgraded to Teams Room Pro at EA Renewal)." -ForegroundColor Yellow
 
$MeetingRoom_License | Sort-Object UPN | Format-Table
 
Write-Host 
 
Write-Host 
 
Write-Host $MTR_Premium.count "Resource accounts with Teams Room Premium or MMR license. (Typically, these licenses should be migrated to Teams Room Pro at EA Anniversary/Renewal)." -ForegroundColor Red
 
$MTR_Premium | Sort-Object UPN | Format-Table
 
Write-Host 
 
Write-Host 
 
Write-Host $MeetingRoomPro_License.count "Resource accounts with MTR Pro licenses." -ForegroundColor Green
 
$MeetingRoomPro_License | Sort-Object UPN | Format-Table
 
Write-Host 
 
Write-Host 
 
Write-Host $MeetingRoomBasic_License.count "Resource accounts with Teams Room System Basic licenses." -ForegroundColor Green
 
$MeetingRoomBasic_License | Sort-Object UPN | Format-Table
 
Write-Host 
 
Write-Host 
 
Write-Host $MeetingRoomOther_License.count "Resource accounts with licenses other than Teams Room System licenses. (Confirm if these licenses are actually needed)." -ForegroundColor Yellow
 
$MeetingRoomOther_License | Sort-Object UPN | Format-Table
 
Write-Host 
 
Write-Host 
 
 
 
$elapsedTime = $(get-date) - $StartElapsedTime
 
$totalTime = "{0:HH:mm:ss}" -f ([datetime]$elapsedTime.Ticks)
 
Write-Host "Processing took $totalTime."  -ForegroundColor Green
 
Write-Host 
 
Write-Host
 
$answer = read-host -prompt "Do you want to export results to a CSV file?  [y/N]"
 
If ($answer.ToLower() -eq 'y' ) 
 
      {
 
             try {
 
                   $SaveMyFile = Get-SaveFilePath    #Use Get-SaveFilePath function to prompt for filepath information
 
                   $Report |  Sort-Object  UPN  | Export-CSV -Path $SaveMyFile[1] -NoTypeInformation  
 
                   Write-Host "Results Saved." -ForegroundColor green
 
             }
 
             catch {
 
                   Write-Host "Unable to save CSV" -ForegroundColor red
 
                   }
 
      }
 
 
 
Write-Host 
 
Write-host "Note: MgGraph and ExchangeOnline connections were not disconnected.  Use Disconnect-ExchangeOnline and Disconnect-MgGraph if needed."  -ForegroundColor yellow
 
Write-Host 
 
Write-Host "Done" -ForegroundColor Green

Veja quais recursos exigem uma licença de Salas Microsoft Teams Pro

Recursos que exigem uma licença de Salas Microsoft Teams Pro podem ser identificados procurando o ícone na página de detalhes de um dispositivo. Se o dispositivo selecionado no momento não tiver uma licença de Salas Microsoft Teams Pro, você não poderá executar a ação e um prompt para atualizar será exibido.

Caixa de diálogo mostrando Salas do Teams opções de reinicialização do dispositivo.