Teamsのメンバー管理を効率化!PowerShellで全チームメンバーを一括エクスポート!

この記事の内容

  • Microsoft TeamsのチームとそのメンバーをPowerShellで一括取得し、CSVファイルに出力する方法を紹介します
  • PowerShell 7のインストールから実行ポリシーの設定まで、つまずきやすいポイントを丁寧に解説します
  • Microsoft Teamsモジュールのインストール方法と認証手順を説明します
  • 出力したCSVをExcelで文字化けなく開くためのUTF-8 BOM対応についても触れます
  • スクリプトの内部構造と動作原理についても解説します

はじめに

Microsoft Teamsを管理している方にとって、「現在どんなチームがあり、誰がメンバーで誰がオーナーなのか」を一覧で把握したい場面は多いはずです。Teams管理センターでは1チームずつしか確認できず、全チームのメンバー構成を一括でExcelに出力するのは手間がかかります。

本記事では、PowerShellスクリプトを使ってTeamsの全チーム一覧・メンバー・オーナーをCSVに書き出す方法を紹介します。スクリプトはGitHubで公開されていますので、ダウンロードしてすぐに使い始めることができます。


事前準備①:PowerShell 7のインストール

Windowsに標準搭載されているWindows PowerShellでも動作する可能性はありますが、より安定した動作のためにPowerShell 7(最新版)のインストールを推奨します。

  1. Microsoftの公式サイトで「PowerShell インストール」と検索し、「WindowsにPowerShellをインストールする」のページへアクセスします
  2. MSIパッケージの64ビット版(上段に表示されているもの)をダウンロードします
  3. ダウンロードしたインストーラーをダブルクリックして実行し、「次へ」を繰り返して完了させます

インストール後、スタートメニューで「PowerShell」と検索すると2種類表示されます。「Windows PowerShell」ではなく「PowerShell 7」を選択してください。


事前準備②:実行ポリシーの設定

PowerShell 7を管理者として実行し、以下のコマンドで実行ポリシーを設定します。

注意: 通常のユーザー権限で実行するとエラーになります。必ずスタートメニューから右クリック→「管理者として実行」で起動してください。

Set-ExecutionPolicy RemoteSigned

RemoteSigned に設定することで、インターネットからダウンロードしたスクリプトも(署名確認後に)実行できるようになります。


事前準備③:ダウンロードしたスクリプトのブロック解除

インターネットからダウンロードしたファイルはWindowsによってブロックされています。スクリプトファイルを信頼する場合は、以下の手順でブロックを解除します。

  1. スクリプトファイルを右クリックし、「プロパティ」を開きます
  2. 「全般」タブの一番下にある「セキュリティ」セクションで「許可する」にチェックを入れます
  3. 「OK」をクリックして閉じます

事前準備④:Microsoft Teamsモジュールのインストール

Teamsを操作するためのPowerShellモジュールを初回のみインストールします。

Install-Module -Name MicrosoftTeams -Force -AllowClobber

このコマンドはインターネットからモジュールをダウンロードしてインストールします。一度実行すれば以降は不要です。


スクリプトの実行手順

① スクリプトのダウンロード

GitHubのリポジトリページからスクリプトをダウンロードします。ページ右上の「Raw file」ボタンをクリックしてダウンロードしてください。

② スクリプトのあるフォルダへ移動

cd C:\Users\<ユーザー名>\Downloads

dir コマンドで中身を確認し、スクリプトファイルが存在することを確かめます。

dir

③ スクリプトの実行

.\Export-TeamsMembers.ps1

実行するとブラウザが開き、Microsoft 365の認証画面が表示されます。Teams管理者権限を持つアカウントでサインインしてください。認証が完了すると、PowerShellの画面に戻り自動的に処理が進みます。

④ 結果の確認

処理が完了すると、ダウンロードフォルダに TeamsReport.csv が生成されます。

dir

Excelでの確認

生成されたCSVファイルをダブルクリックしてExcelで開くと、以下の列が含まれた表が表示されます。

列名内容
チーム名Teamsチームの表示名
オーナー所有者のユーザー名(複数の場合はカンマ区切り)
メンバーメンバーのユーザー名(複数の場合はカンマ区切り)

Excelのテーブル機能やフィルター機能を使って、特定のメンバーが所属するチームを絞り込んだり、オーナー一覧を確認したりすることができます。また、日本語のチーム名・ユーザー名も文字化けなく表示されるよう設計されています。


スクリプトの内部解説

スクリプトの動作を理解したい方向けに、主要な処理の流れを解説します。

モジュールのインポートと認証

Import-Module MicrosoftTeams
Connect-MicrosoftTeams

Connect-MicrosoftTeams を実行するとブラウザが起動し、対話的な認証が行われます。多要素認証にも対応しています。

チーム一覧の取得

$teams = Get-Team

Get-Team コマンドレットでテナント内の全チームを取得し、変数 $teams に配列として格納します。

メンバー・オーナーの取得

$owners = Get-TeamUser -GroupId $teamId -Role Owner
$members = Get-TeamUser -GroupId $teamId -Role Member

Get-TeamUser に対してグループIDとロール(Owner または Member)を指定することで、各チームのオーナーとメンバーを個別に取得できます。

ループ処理による全チームへの適用

$output = @()

$teams | ForEach-Object {
    $team = $_
    $teamId = $team.GroupId
    $teamName = $team.DisplayName

    # オーナー・メンバー取得と文字列結合
    $ownerNames = (Get-TeamUser -GroupId $teamId -Role Owner | ForEach-Object { $_.User }) -join ","
    $memberNames = (Get-TeamUser -GroupId $teamId -Role Member | ForEach-Object { $_.User }) -join ","

    $output += [PSCustomObject]@{
        チーム名 = $teamName
        オーナー = $ownerNames
        メンバー  = $memberNames
    }
}

空の配列 $output を用意し、ForEach-Object でチームを1件ずつ処理しながら結果を追加していきます。オーナーやメンバーが複数いる場合はカンマで連結します。

UTF-8 BOM付きCSVとして出力

$tempPath = ".\temp_report.csv"
$output | Export-Csv -Path $tempPath -NoTypeInformation -Encoding UTF8

$finalPath = ".\TeamsReport.csv"
Get-Content $tempPath | Out-File -FilePath $finalPath -Encoding utf8BOM

Remove-Item $tempPath

Export-Csv で一時ファイルに出力した後、Out-File でエンコーディングを utf8BOM(UTF-8 BOM付き)に変換して再出力します。BOMを付けることで、ExcelがUTF-8ファイルを文字化けなく認識できるようになります。


Teams管理センターのエクスポート機能との比較

Teams管理センターにもエクスポート機能はありますが、チームの一覧のみで各チームのメンバー名は含まれません。個別チームのメンバーリストはチームごとにエクスポートボタンを押す必要があり、全チームを一括で出力することはできません。

PowerShellスクリプトを使うと、全チームのメンバー情報を1回の実行でまとめて取得できる点が大きなメリットです。


まとめ

本記事では、PowerShellを使ってMicrosoft Teamsの全チーム・メンバー・オーナーをCSVに一括エクスポートする方法を解説しました。

  • PowerShell 7のインストールと実行ポリシーの設定が最初のステップです
  • MicrosoftTeams モジュールをインストールし、Connect-MicrosoftTeams で認証します
  • Get-TeamGet-TeamUser を組み合わせることで全チームのメンバー構成を取得できます
  • UTF-8 BOM付きで出力することで、Excelでも日本語が文字化けしません

テナント内のチーム棚卸しや、メンバー構成の定期確認など、Teamsの運用管理にぜひ活用してみてください。スクリプトの構造を理解すれば、必要な属性を追加したり出力フォーマットを変更したりと、自分の環境に合わせたカスタマイズも容易です。