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 みんなのチーム
チームにメンバーを登録するコマンド(単体)
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ファイルで作成する。
追加するユーザリストをcsv で下記のように作成する。UserはUPN(UserPrincipalName)とRoleのみでよい。owner は管理者で member は一般のユーザ
User | Role |
aaa@tec-memo.com | owner |
bbb@tec-memo.com | member |
ccc@tec-memo.com | member |
任意のフォルダに作成したユーザリストの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
コメント