【PowerShell】コマンドによるTeamへのメンバー登録方法

PowerShell Windows

初めに

団体や企業などでTeamsを使うのが当たり前になってきています。
数人を追加する分には手で一人一人追加するのでも良いのですが、それが10人以上で複数チャネルにまたがるといった状況になると登録の工数が膨大になります。

本稿では、Teamsへのメンバー登録工数削減のため、PowerShellを用いたコマンドによるTeamsへのメンバー登録方法及びサンプルスクリプトを紹介します。

事前準備

必要モジュールのインストール

PowerShellを起動し、下記コマンドを実行して、Microsoft Teamsのコマンドレットを取得するモジュールをインストールします。

Install-Module -Name MicrosoftTeams -Force -AllowClobber -Scope CurrentUser

メンバー登録用CSVの作成

メンバー登録用のCSVを作成する必要があります。
CSVは下記フォーマットのようなものを文字コードUTF-8で作成します。

GroupID,DisplayName,User
XXXXX-XXXX-XXXX-XXXX-XXXXXX,テストチャネル,test1@test.co.jp
XXXXX-XXXX-XXXX-XXXX-XXXXXX,テストチャネル,test2@test.co.jp

それぞれの項目は下記のとおりです。
GroupID:Teamsのチームを特定する値です。GroupIDは、「Get-Team」コマンドで取得できます。
DisplayName:チャネル名です。
User:登録するメンバーのメールアドレスです。

Teamsへのメンバー登録スクリプトの作成

サンプルスクリプトを下記に示します。
下記スクリプトを「Add_TeamsUser.ps1」のような名前で保存します。

#--------------------------------------------------------
#
#【Teamsメンバー追加スクリプト】
#
#※下記コマンドでモジュールがインストールされている前提
#Install-Module -Name MicrosoftTeams -Force -AllowClobber -Scope CurrentUser
#
#--------------------------------------------------------

#PowerShell実行ポリシーの変更
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Force -Scope Process

#CSVファイルのフルパスを取得
$csvPath = Read-Host -Prompt "CSVファイルのフルパスを入力してください。"

#CSVファイルの存在チェック
if((Test-Path $csvPath) -eq "True"){

 #Microsoft Teamsへ接続
 Connect-MicrosoftTeams

 $Selection = Read-Host -Prompt "実行したい操作を番号で選択してください。
 1.チームにメンバーを追加
 2.チームに所有者としてメンバーを追加
 3.プライベートチャネルにメンバーを追加
 4.プライベートチャネルのメンバーを所有者に昇格"

 switch($Selection){
   #チームにメンバーを追加
   1 {Import-Csv -Path $csvPath -Encoding UTF8 | foreach {
       Add-TeamUser -GroupId $_.GroupID -User $_.User
     }
   }

   #チームに所有者としてメンバーを追加
   2 {Import-Csv -Path $csvPath -Encoding UTF8 | foreach {
       Add-TeamUser -GroupId $_.GroupID -User $_.User -Role Owner
     }
   }

   #プライベートチャネルにメンバーを追加
   3 {Import-Csv -Path $csvPath -Encoding UTF8 | foreach {
       Add-TeamChannelUser -GroupId $_.GroupID -DisplayName $_.DisplayName -User $_.User
     }
   }

   #プライベートチャネルのメンバーを所有者に昇格
   4 {Import-Csv -Path $csvPath -Encoding UTF8 | foreach {
       Add-TeamChannelUser -GroupId $_.GroupID -DisplayName $_.DisplayName -User $_.User -Role Owner
     }
   }

   default {Write-Host "入力値が不正です。何らかのキーを入力するとスクリプトを終了します。"
   Read-Host
   exit
   }
 }

 Write-Host "登録が完了しました。何らかのキーを入力するとスクリプトを終了します。" 
 Read-Host
}else{
 Write-Host "指定されたCSVファイルが存在しません。何らかのキーを入力するとスクリプトを終了します。"
 Read-Host
}

コマンドによるTeamへのメンバー登録方法

上記で作成した「Add_TeamsUser.ps1」を実行します。
CSVファイルのフルパスが聞かれるので、該当ファイルのパスを入力します。

その後、操作したい番号を選択します。
なお、プライベートチャネルにメンバーを追加するためには、事前にそのメンバーがチームに追加されている必要があります。
つまり、番号3を実行したい場合は、番号1を実行した後に番号3を実行します。

また2024/1/24時点ではプライベートチャネルにいきなり所有者として追加することはできない仕様であるため、番号4を実行するためには、番号1→番号3→番号4と実行する必要があります。
この辺りのユーザビリティは考慮できていないので、必要に応じて改変いただければと思います。

最後に

とりあえず、自分の作業工数削減のために動けばよいと思って作成しました。
エラー処理などの例外処理が不足しているので、その点はご注意ください。
あくまでもサンプルとして参考にしていただければ幸いです。

コメント