レポート Teams チャネルの電子メール アドレス

レポート Teams チャネルの電子メール アドレス

これらのあいまいなチームチャネル電子メールアドレスの接続

同僚は、チャネルのメールアドレスが属するチームを見つける方法の質問を投げかけました。これは、Teams がチャネルの電子メール アドレスを作成するとき ( 24482dde.office365itpros.com@na.teams.ms)、アドレスには、アドレスをそのチャネルに接続できるヒントが含まれていません。チームは、標準、プライベート、共有など、あらゆる種類のチャネルの電子メール アドレスを生成でき、すべての種類に同じ種類の難読化されたアドレスが使用されます。Teams 管理センターでは、チャネルの電子メール アドレスを報告する方法はありません – チャネルの電子メール アドレスを表示するためのすぐに使用できる唯一の方法は、Teams クライアントの[電子メール アドレスの取得]オプションを使用することです。

  Teams チャネルの電子メール アドレスの表示
図 1: Teams チャネルの電子メール アドレスの表示

私が言ったとしても、PowerShellがそのトリックを行います。実際、監査レコードを使用してチャネルがいつ電子メールアドレスを取得または失うかを知る方法について書いたとき、私は以前にこの道を進んでいました。その記事の一部では、PowerShell と Graph API 要求 ( スクリプトは GitHub から入手できます。).グラフ要求が必要なのは、 チームチャネルを取得 コマンドレットは、返すプロパティのセットに電子メール アドレスを含めません。

グラフのマスタリング

このスクリプトは、PowerShell でグラフを使用するための私の初期の取り組みの 1 つであり、すべてのコードと同様に、新しい目がより良い結果を生み出すことがあります。少なくとも、それは永遠の希望です。今回は Microsoft Graph PowerShell SDK を使うことにしました。

3 年前、Microsoft Graph PowerShell SDK は素晴らしい状態ではありませんでした。それはまだあるべき場所ではないと主張する人もいるでしょう。私はSDKが、たとえそのドキュメントがまだ汚れた運河の水を吸っていても、大幅に改善されたと思います。SDK の最大の利点は、Graph 要求の実行に必要なアクセス許可を保持するために、Azure AD で登録済みアプリを作成する必要がないことです。そのコマンドレットの一部は、ページネーションも処理します。

多くの人にとって、SDK はグラフ要求を実行するよりも使いやすいです。API 要求形式のコツをつかめば、SDK コマンドレットと Graph 要求を切り替えることができます。これは、ユーザーが左ハンドル車と右ハンドル車を切り替えるのと同じように、切り替えることができます。いずれにせよ、ここに私が書いたコードがあります:

Connect-MgGraph -Scopes Group.Read.All, Directory.Read.All
Select-MgProfile Beta
[array]$Teams = Get-MgGroup -Filter "resourceProvisioningOptions/Any(x:x eq 'Team')" -All
If (!($Teams)) {Write-Host "Can't find any teams - exiting"; break} 
$Teams = $Teams | Sort-Object DisplayName
$ChannelsList = [System.Collections.Generic.List[Object]]::new()
[int]$i = 0
ForEach ($Team in $Teams) {
   $i++
   $ProgressBar = "Processing Team " + $Team.DisplayName + " (" + $i + " of " + $Teams.Count + ")"
   Write-Progress -Activity "Checking Teams Information" -Status $ProgressBar -PercentComplete ($i/$Teams.Count*100)
   [array]$Channels = Get-MgTeamChannel -Teamid $Team.Id 
   ForEach ($Channel in $Channels) {
     If ($Channel.Email) {
       $ChannelLine = [PSCustomObject][Ordered]@{  # Write out details of the private channel and its members
          Team           = $Team.DisplayName
          Channel        = $Channel.DisplayName
          Description    = $Channel.Description
          EMail          = $Channel.Email
          Id             = $Channel.Id }
       $ChannelsList.Add($ChannelLine) } 
  } #End Foreach Channel
} # End ForEach Team

チーム生成メールアドレスの絞り込み

今のところ大丈夫です。唯一の複雑さは、 Get-MgTeamChannel コマンドレットは、チャネルの電子メール アドレスが生成されていない場合、チームの一般チャネルの基になる Microsoft 365 グループのプライマリ SMTP アドレスを返します。いくつかの点で、これは一般チャネルがチームの中心であるため、期待されます。ただし、グループのプライマリ SMTP アドレスを使用して、一般チャネルに電子メールを送信することはできません。Exchange Online は、このアドレスに送信されたすべてのメッセージをグループ メールボックスに配信します。

したがって、チームが生成したアドレスのセットを見つけるには、追加のフィルターを適用する必要があります。チームによって生成されたすべてのアドレスは、この目的で使用される特別な Office 365 ドメインである “teams.ms" で終わるため、これは簡単です。コマンドは次のとおりです。

$TeamsEmailAddresses = $ChannelsList | ? {$_.Email -Like "*.teams.ms"}

図 2 は、テナント内の電子メール アドレスのセットを示しています。それらのほとんどはテストに使用され、あいまいなチャンネル名の一部を占めています。

レポート Teams チャネルの電子メール アドレス
図 2: Teams チャネルの電子メール アドレスのレポート作成

PowerShell は管理者にとって非常に貴重です

このような状況は、PowerShell が Microsoft 365 テナント管理者にとって非常に貴重なツールであるという主張の真実を強調しています。ベンダーによって作成された管理ツールのセットはすべてを網羅するものではなく、PowerShellのギャップを埋める能力がそれを非常に便利にしている理由です。PowerShellからグラフ呼び出しを行う機能を追加すると、実際に非常に強力なツールが提供されます。


Office 365 アプリケーションが実際に継続的にどのように機能するかについては、 Office 365 for IT プロフェッショナル 電子ブック。毎月の更新により、Office 365 エコシステム全体で重要な点についてサブスクライバーに通知されます。

未分類

Posted by admin