サポートされていないライセンスを持つTeams Roomsデバイスを検索する

ユーザー ライセンスまたは Microsoft Teams 共有デバイス ライセンスのみが割り当てられているリソース アカウントは、Microsoft Teams Rooms デバイスでの使用はサポートされていません。 Teams Rooms デバイスで使用されるリソース アカウントには、次のいずれかのライセンスを割り当てる必要があります。

  • Microsoft Teams Rooms Pro
  • Microsoft Teams Rooms Basic
  • Microsoft Teams Rooms Standard (レガシ)
  • Microsoft Teams Rooms Premium (レガシ)

重要

ユーザー ライセンスは、会議デバイスでの使用にはサポートされていません。 Teams Roomsデバイスに割り当てられているユーザー ライセンスは、承認済みのTeams Rooms ライセンスに置き換える必要があります。 2023 年 9 月 30 日の時点で、Team Rooms ライセンスを持たない会議デバイスは、Teams Rooms ライセンスが割り当てられるまでサインインがブロックされます。

また、Microsoft Teams 共有デバイス ライセンスはサポートされておらず、Teams Roomsデバイスでは機能しません。 Teams Roomsデバイスは、Basic または Teams Rooms Pro ライセンスTeams Rooms割り当てる必要があります (Teams Roomsレガシ ライセンスも有効です)。

Teams Rooms デバイスにサインインしているリソース アカウントにTeams Rooms ライセンスがあるかどうかを確認するためのオプションがいくつかあります。 Teams Roomsデバイスが 2 台しかない場合は、「いくつかのTeams Rooms デバイスのライセンスを確認する」の手順を使用します。 複数のTeams Roomsデバイスがある場合は、「複数のMicrosoft Teams Rooms デバイスのライセンスを確認する」の手順を使用します。

Teams Rooms ライセンスの詳細については、「Microsoft Teams Rooms ライセンス」を参照してください。

いくつかのTeams Roomsデバイスのライセンスを確認する

デバイスの数が少ない場合は、Teams 管理センターで Teams デバイスに移動し、表示するデバイス カテゴリ (Windows、Android 上のTeams RoomsSurface Hubs でTeams Rooms) を選択すると、デバイスライセンスを確認できます。

たとえば、Windows Teams Rooms Teams デバイス>を選択すると、次の画像が表示されます。 [ライセンス] 列には、各デバイスに割り当てられているTeams Rooms ライセンスが表示されます。

Standard、Pro、Pro (試用版) ライセンスに焦点を当てたインベントリリストをTeams Roomsします。

Teams Rooms Pro ライセンスを持つデバイスは、Teams Rooms デバイスのすべての機能にアクセスできます。 他のTeams Rooms ライセンスを持つデバイスは、これらの機能のサブセットにアクセスできます。 各ライセンスで使用できる機能は、Teams Rooms Basic とTeams Rooms Pro機能の比較で確認できます。

複数のMicrosoft Teams Rooms デバイスのライセンスを確認する

Teams Roomsデバイスのライセンスを一度に 1 つずつ確認すると、時間がかかる場合があります。 このプロセスを容易にするために、すべてのTeams Rooms デバイスのライセンスをチェックするサンプル スクリプトを利用できるようにします。 このスクリプトでは、ライセンスの種類別に整理された、Teams Rooms デバイスに関連付けられているリソース アカウントの一覧が提供されます。 Teams Rooms デバイスでサポートされていないライセンスを持つリソース アカウントは、レビューのためにグループ化されます。 Teams Rooms デバイスに関連付けられているリソース アカウントにサポートされていないライセンスの種類がある場合は、2023 年 7 月 1 日より前にサポートされているライセンスに変更する必要があります。

この短いビデオを見て、サンプル スクリプトを使用してライセンスを監査する方法を確認します。

<#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

Microsoft Teams Rooms Pro ライセンスが必要な機能を確認する

Microsoft Teams Rooms Pro ライセンスを必要とする機能は、デバイスの詳細ページでアイコンを探すことで識別できます。 現在選択されているデバイスにMicrosoft Teams Rooms Pro ライセンスが割り当てられていない場合は、アクションを実行できないため、アップグレードのプロンプトが表示されます。

デバイスの再起動オプションTeams Rooms示すダイアログ。