PowerShellでMicrosoft teamsを操作(その1:チーム作成/復元とユーザ一括登録)

投稿者: | 2020年5月5日

Microsoft teamsはMicrosoft365の一部なので、powershellでMicrosoft365の操作で行えます。
ですが、Microsoft teamsに特化したpowershellコマンドもあります。

チーム作成

Microsoft Teamsの「チーム」の作成方法は2つあります。
①Microsoft365から「Microsoft365グループ」を作成し、Microsoft teamsに登録
②Microsoft teamsに直接作成

どちらの作成方法でもチームを作成できますが、ここでは簡単にできる「②Microsoft teamsに直接作成」を紹介します。

Microsoft teamsへの接続

PowerShellのMS teamsモジュール

PowerShell 用の teamsモジュールをインストールします。インストール方法はこちらを参照ください。

Microsoft teamsに接続

接続方法はこちらを参照ください。

これで、PowerShell で Microsoft teams を操作ができる状態となりました。

チームの確認

チーム一覧

すべてのMicrosoft Teamsの「チーム」の確認は以下になります。コマンドは「Get-Team」です。

PS> Get-Team

GroupId                  DisplayName  Visibility  Archived  MailNickName   Description
-------                  -----------  ----------  --------  ------------   -----------
xxxx-xxxx-xxxx-xxxx-xxxx team-A       Private     False     team-A         プロジェクトA
yyyy-yyyy-yyyy-yyyy-yyyy team-B       public      False     team-B         プロジェクトB

特定のチーム

特定のMicrosoft Teamsの「チーム」の確認は以下になります。
Get-Teamコマンドにフィルターをかけることで特定のチームを取得することができます。

フィルタ 検索条件
GroupId 特定のチームのID
MailNickName メールアドレス
DisplayName 表示名
Visibility プライベートかパブリックか

以下は同じ結果となります。

PS> #GroupId方法①
PS> Get-Team -GroupId yyyy-yyyy-yyyy-yyyy-yyyy

PS> #GroupId方法②
PS> $teamName = "team-A"
PS> Get-Team -GroupId (Get-Team | Where { $_.DisplayName -eq $teamName }).GroupId

PS> #DisplayName
PS> Get-Team -DisplayName "team-A"

なお、パイプラインで fl を指定(| fl )することで、チームの詳細情報が表示されます。ただし、チームに所属するメンバーの情報は別のコマンドレットで取得する必要があります。

チームの作成

チームの作成時にメンバーの追加はできないため、まずチームを作成しその次にメンバーの追加をします。

以下の情報をもとにチームの作成をします。

・表示名(DisplayName):プロジェクトX
・チームのメールアドレス(MailNickName):project-X
・管理者(Owner):PL@dom.com
・公開範囲(Visibility):public
・説明(Description):極秘

PS> New-Team -DisplayName "プロジェクトX" `
    -MailNickName "project-X" `
    -Owner "PL@dom.com" `
    -Visibility public `
    -Description "極秘"

GroupId                  DisplayName  Visibility  Archived  MailNickName   Description
-------                  -----------    ----------  --------  ------------   -----------
xxxx-xxxx-xxxx-xxxx-xxxx プロジェクトX    public      False     project-X      極秘

チームにメンバの追加

以下の情報をもとにメンバの追加をします。
なお、ここではユーザは作成されているものとし、作成されているユーザをチームにメンバ登録します。
ユーザの作成はこちらを参照ください。


①ユーザ鈴木一郎
・ユーザ名(USer):ichisuz@dom.co.jp
・役割(Role):管理者
②ユーザ田中花子
・ユーザ名(USer):tanhana@dom.co.jp
・役割(Role):ユーザ

PS> $teamName = "プロジェクトX"

PS> Add-TeamUser -GroupId (Get-Team | Where { $_.DisplayName -eq $teamName }).GroupId `
      -User "ichisuz@dom.co.jp" -Role Owner
PS> Add-TeamUser -GroupId (Get-Team | Where { $_.DisplayName -eq $teamName }).GroupId `
      -User "tanhana@dom.co.jp" -Role Member

なお、メンバを追加した場合に実際にチームの管理画面のメンバー一覧に表示されるまでに最大 2 時間とされているタイムラグがあります。

チームメンバの確認

チームメンバの確認をします。

PS> $teamName = "プロジェクトX"

PS> Get-TeamUser -GroupId (Get-Team | Where { $_.DisplayName -eq $teamName }).GroupId

UserId                    User               Name      Role
------                    ----               ----      ----
xxxx-xxxx-xxxx-xxxx-xxxx  PL@dom.com        リーダ     owner
xxxx-xxxx-xxxx-xxxx-xxxx  ichisuz@dom.co.jp 鈴木一郎   owner
xxxx-xxxx-xxxx-xxxx-xxxx  tanhana@dom.co.jp 田中花子   member

チームにメンバの一括登録

チームにメンバの一括登録をします。

excelでユーザ情報を作成しcsvファイル形式で保存する

ここでは以下の情報をもとにMicrosoft teamsのチームにユーザを作成するものとします。
これに基づいてexcelファイルを作成します。


・userUPN = (メールアドレス ログオン名)
・groupName (グループのDisplayname)
・Role = (役割)

これをもとにcsv形式で保存します。

userUPN,teamname,Role
ichisuz@dom.co.jp,プロジェクトX,owner
tanhana@dom.co.jp,プロジェクトX,member

注意点は、文字化け防止のためcsvファイルを保存する際に文字コードをUTF-8 に指定することです。

Microsoft teamsチームにメンバ登録する

作成したcsvファイルをもとにMicrosoft teams チームにメンバ登録します。
ここでは作成したcvsファイル名は users_grp.csv とします。

PS> Import-Csv -Path ".\users_grp.csv" |
      ForEach-Object {Add-TeamUser `
        -GroupId (Get-Team | Where { $_.DisplayName -eq $teamName }).GroupId `
        -User $_.userUPN  -Role $_.Role `
      }

チームからユーザの削除

チームからユーザの削除をします。コマンドは「Remove-TeamUser -GroupId <ユーザID>」です。

PS> Remove-TeamUser -GroupId (Get-Team | Where { $_.DisplayName -eq $teamName }).GroupId `
   -User <ユーザ名>

チームの削除

「チームの削除」は、「チームに関連付けられている Office 365 グループの削除」ということになります。既定では、削除された Office 365 グループは 30 日間保持され、復元することができます。コマンドは「Remove-Team -GroupId <チームID>」です。

PS> $teamName = "プロジェクトX"

PS> Remove-Team -GroupId (Get-Team | Where { $_.DisplayName -eq $teamName }).GroupId

チームの復元

「チーム」の復元は、”azureAD” 環境でMicrosoft 365 グループを復元することになります。

「チーム」を削除してから30日以内であれば「チーム」を復元(Microsoft 365 グループを復元)することができます。復元により、タブ、標準チャネル、プライベート チャネル、それらに関連付けられたサイト コレクションなどのチーム コンテンツが復元されます。

AzureADPreview モジュールをインストール

「チーム」復元には ”AzureADPreview モジュールのインストール” が必要となります。インストール方法はこちらを参照ください。

azureADに接続

azureADに接続します。コマンドは「Connect-AzureAD」です。

PS> Connect-AzureAD

ポップアップ画面に管理者アカウントとパスワードを使用してサイン インします。

削除されたチーム一覧

削除されて30日未満の「チーム(azureADのグループ)」の一覧を取得します。コマンドは「Get-AzureADMSDeletedGroup」です。

PS> Get-AzureADMSDeletedGroup

Id             DisplayName             Description
--             -----------             -----------
xxxx-xxxx-xxxx プロジェクトX            プロジェクトX
yyyy-yyyy-yyyy プロジェクトX1           プロジェクトX1

削除されたチームの復元

削除されたチームを復元します。
例では「プロジェクトX1」チームを復元します。コマンドは「Restore-AzureADMSDeletedDirectoryObject -Id <チームのID>」です。

PS>#復元するチーム名
PS> $teamName = "プロジェクトX1"

PS>#復元
PS> Restore-AzureADMSDeletedDirectoryObject -Id (Get-AzureADMSDeletedGroup | Where { $_.DisplayName -eq $teamName }).id
Id             DisplayName             Description
--             -----------             -----------
yyyy-yyyy-yyyy プロジェクトX1           プロジェクトX1

「チーム(azureAdのグループ)」の復元の確認

「チーム(azureAdのグループ)」が正常に復元されたことを確認します。コマンドは「Get-AzureADGroup -ObjectId <グループのID>」です。

PS>#復元するチーム名
PS> $teamName = "プロジェクトX1"

PS>#ここに存在する
PS> Get-AzureADGroup -ObjectId (Get-AzureADGroup | Where { $_.DisplayName -eq $teamName }).ObjectId

PS>#ここには存在しない
PS> Get-AzureADMSDeletedGroup

なお、復元プロセスが完了するまで、最大で 24 時間かかる場合があります。その後、タブやチャネルなど、該当するチームに関連付けられたチームとコンテンツが Teams に表示されます。

次の操作

次回は、「PowerShellでMicrosoft teamsを操作(その2:チャネル作成)」になります

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です