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(最新版)のインストールを推奨します。
- Microsoftの公式サイトで「PowerShell インストール」と検索し、「WindowsにPowerShellをインストールする」のページへアクセスします
- MSIパッケージの64ビット版(上段に表示されているもの)をダウンロードします
- ダウンロードしたインストーラーをダブルクリックして実行し、「次へ」を繰り返して完了させます
インストール後、スタートメニューで「PowerShell」と検索すると2種類表示されます。「Windows PowerShell」ではなく「PowerShell 7」を選択してください。
事前準備②:実行ポリシーの設定
PowerShell 7を管理者として実行し、以下のコマンドで実行ポリシーを設定します。
注意: 通常のユーザー権限で実行するとエラーになります。必ずスタートメニューから右クリック→「管理者として実行」で起動してください。
Set-ExecutionPolicy RemoteSigned
RemoteSigned に設定することで、インターネットからダウンロードしたスクリプトも(署名確認後に)実行できるようになります。
事前準備③:ダウンロードしたスクリプトのブロック解除
インターネットからダウンロードしたファイルはWindowsによってブロックされています。スクリプトファイルを信頼する場合は、以下の手順でブロックを解除します。
- スクリプトファイルを右クリックし、「プロパティ」を開きます
- 「全般」タブの一番下にある「セキュリティ」セクションで「許可する」にチェックを入れます
- 「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-TeamとGet-TeamUserを組み合わせることで全チームのメンバー構成を取得できます- UTF-8 BOM付きで出力することで、Excelでも日本語が文字化けしません
テナント内のチーム棚卸しや、メンバー構成の定期確認など、Teamsの運用管理にぜひ活用してみてください。スクリプトの構造を理解すれば、必要な属性を追加したり出力フォーマットを変更したりと、自分の環境に合わせたカスタマイズも容易です。