Teams のチームやチャネルにメンバーを一括登録するPowershellスクリプト

スポンサーリンク

Teams のチームメンバーの大幅な入れ替えが発生した場合、手作業でメンバーを追加していくのは面倒。そこで一括で登録するPowershellスクリプトを作成する。一括削除する方法はこちらの記事を参照。

事前準備

Powershellスクリプトを作成、実行する前に事前に必要な情報として、対象チームのGroupID と対象メンバーのリストが必要となる。

Powershell でmicrosoftteams モジュールをインストール

Powershell を管理者権限で起動して下記コマンドでモジュールをインストールする。

PS> Install-Module microsoftteams

Powershell で Teams に接続する。

Powershell より Connect-MicrosoftTeams コマンドを実行し、

PS> Connect-MicrosoftTeams 

認証画面が表示されるので対象テナントのユーザを選択するか、管理者ユーザでログインする。

対象チームのGroupIDを取得する。

Get-Team コマンドで対象チームを絞り込む。所属しているユーザや、チーム名などで検索して対象チームのGroupID を取得する。

チーム名で検索する場合

PS> Get-Team -DisplayName "みんなのチーム"

ユーザが所属しているチームで検索する場合

PS> Get-Team -DisplayName -User hoge@tec-memo.com

実行すると下記のようにGroupIDが表示されるので控えておく

PS> Get-Team -DisplayName "みんなのチーム"

GroupId                              DisplayName        Visibility  Archived  MailNickName       Description
-------                              -----------        ----------  --------  ------------       -----------
123456abc-a11b-1fiea-cc11-abcdefg123 みんなのチーム            HiddenMe... False     567                  みんなのチーム

所属しているメンバー一覧を取得する。

追加するユーザリストをcsv で下記のように作成する。UserはUPN(UserPrincipalName)とRoleのみでよい。owner は管理者で member は一般のユーザ

UserRole
aaa@tec-memo.comowner
bbb@tec-memo.commember
ccc@tec-memo.commember

チームにメンバーを登録する

Powershellでチームにユーザを追加するコマンド。 -GroupID オプションで先ほど取得したグループIDを指定して、-User オプションでチームに追加したいユーザのUPNを指定する。

PS> Add-TeamUser -GroupId 123456abc-a11b-1fiea-cc11-abcdefg123 -User aaa@tec-memo.com

チャネルにメンバーを登録する

チャネルはプライベートチャネルであることが前提となる。標準チャネルはチーム全員がアクセスできることが前提であるため、メンバーというが概念がないため。

Powershellでチェネルににユーザを追加するコマンド。 -GroupID オプションで先ほど取得したグループIDを指定して、-DisplayName でチャネル名を指定し、-User オプションでチャネルに追加したいユーザのUPNを指定する。

PS> Add-TeamChannelUser -GroupId 123456abc-a11b-1fiea-cc11-abcdefg123 -DisplayName ""  -User aaa@tec-memo.com

スクリプトの作成

任意のフォルダに作成したユーザリストのcsvファイルと下記のスクリプトを作成して配置した上で実行する。リストファイル名は account.csv としている。GroupID変数は上記で取得したGroupIDに適宜書き換える

下記の例はチームにユーザを登録しているが、チャネルにメンバー登録する場合は適宜、Add-TeamUser と記載の個所を Add-TeamChannelUser コマンドに書き換えればよい。

# 作業フォルダの定義
$scriptname = $MyInvocation.MyCommand.Name
$path = $PSScriptRoot
# 作業フォルダに移動
cd $path

#ログ取得
if (!(Test-Path .\log)){
    mkdir .\log
    Write-Output ("logフォルダを作成しました。")
}
$logfile = ".\log\" + $scriptname +"_"+ (Get-date -Format "yyyy-MMdd-HHmmss") + ".log"
Start-Transcript $logfile -Append

# Teams 接続
Connect-MicrosoftTeams

# 追加対象のCSVリストを取得
$Lists = Import-Csv -Encoding Default ".\account.csv"
# チームのGourpID定義
$GroupID = "123456abc-a11b-1fiea-cc11-abcdefg123"

$count = 0
# フォルダ作成
foreach($l in $Lists){
    $count ++
    Add-TeamUser -GroupId $GroupID -User $l.User
    Write-Output("[" + $count +"]/[" + $Lists.Count + "]  " + $l.User + " をチームから追加しました。")
}
# ログ停止
Stop-Transcript

コメント

タイトルとURLをコピーしました