2019/11/12

Microsoft TeamsをPowerShellを使って動的更新グループとして一括作成したい



というわけで、PowerShellで チームを一括作成できるか
調査してみました。

まず、Microsoft TeamsはOffice365グループと連動しています。
さらに、Office365グループを動的メンバーシップにすることで
Teams側でも動的更新できるみたいです。
チームの動的なメンバーシップの概要 - Microsoft Docs
https://docs.microsoft.com/ja-jp/microsoftteams/dynamic-memberships



以下のサイトを元に、手動でOffice365動的グループ・Teamsへの切り替えができることは確認できました。

・グループ作成 – Microsoft Docs
https://docs.microsoft.com/ja-jp/office365/admin/create-groups/create-groups?view=o365-worldwide
・Office 365 Groups (グループ)に Microsoft Teams の機能を追加する – Art-Break Tech
https://art-break.net/tech/?p=1256
・Azure Active Directory の動的グループ メンバーシップ ルール - Microsoft Docs
https://docs.microsoft.com/ja-jp/azure/active-directory/users-groups-roles/groups-dynamic-membership
ただ、実際運用する上では、
一括でPowerShellでOffice365動的グループを作成し、さらにはTeams連動させたいので、以下手順で試してみます。

■Office365動的グループ作成

Office365グループ作成には以下のコマンドレッドが使えそうです。
New-AzureADMSGroup 
https://docs.microsoft.com/en-us/powershell/module/azuread/new-azureadmsgroup?view=azureadps-2.0
---------------------------------------------------------------------------------
New-AzureADMSGroup -DisplayName "testDynamic" `
-Description "Dynamic group created from PS" `
-MailEnabled $true -MailNickName "testDynamic"`
 -SecurityEnabled $true -GroupTypes "DynamicMembership","Unified" `
-MembershipRule '(user.department -contains ""Marketing"")' `
-MembershipRuleProcessingState "On"
---------------------------------------------------------------------------------
上記サンプルを元に、Connect-AzureADで接続し、
Install-Module AzureAD を実行するも、エラー発生。
以下の記事を参照しました。
Error while creating dynamic group using powershell
https://github.com/MicrosoftDocs/azure-docs/issues/34263
結果、以下のモジュールのインストール・インポートで利用できるようになりました。
---------------------------------------------------------------------------------
Install-Module AzureADPreview -Scope CurrentUser -AllowClobber
Remove-Module AzureAD -ErrorAction SilentlyContinue
Import-Module AzureADPreview
---------------------------------------------------------------------------------

実際にOffice365 動的グループを作成してみます。

image

AADに登録されているユーザーで、部署属性に入力してある任意の事業部ユーザーは
自動的にOffice365グループに登録されることを確認できました。

image

ただ、この状態でO365で見ると、Office365グループが作成されただけで
プライバシーはパブリック、Teamsも作成されていない状態になりました。
image

Privateに変更した上で、Office365グループをTeams利用できるようにします。

■Office365グループをTeams登録する

Office365グループ設定は、
ExchangeOnline側の設定となるようなので、接続します。
Exchange Online PowerShell に接続する
https://docs.microsoft.com/ja-jp/powershell/exchange/exchange-online/connect-to-exchange-online-powershell/connect-to-exchange-online-powershell?view=exchange-ps
グループを検索し、作成したグループが存在することを確認します。
Get-UnifiedGroup
https://docs.microsoft.com/ja-jp/powershell/module/exchange/users-and-groups/get-unifiedgroup?view=exchange-ps
---------------------------------------------------------------------------------
Get-UnifiedGroup –Identity <グループ名>
---------------------------------------------------------------------------------

image

Privateに変更します。
Set-UnifiedGroup
https://docs.microsoft.com/ja-jp/powershell/module/exchange/users-and-groups/set-unifiedgroup?view=exchange-ps
---------------------------------------------------------------------------------
Set-UnifiedGroup –Identity <グループ名> -AccessType Private
---------------------------------------------------------------------------------
Privateになったことが確認できます。
image

つづいて、Office365グループをTeamsに登録します。
Teamsに変更する前に、予めGet-UnifiedGroupで対象グループのObjectID取得しておきます。
---------------------------------------------------------------------------------
$a=Get-UnifiedGroup -Identity <グループ名>
---------------------------------------------------------------------------------
Teamsに接続し、モジュールをインストールします。

---------------------------------------------------------------------------------
connect-microsoftteams
Install-Module -Name MicrosoftTeams -RequiredVersion 1.0.1
---------------------------------------------------------------------------------

インストールのモジュールバージョンが1.0.1以降であれば、作成のコマンドが利用できそうです。
Teams モジュール 1.0.1
https://www.powershellgallery.com/packages/MicrosoftTeams/1.0.1
グループを指定し、Teams作成します。
New-Team
https://docs.microsoft.com/en-us/powershell/module/teams/new-team?view=teams-ps
---------------------------------------------------------------------------------
New-Team -GroupId $a.ExternalDirectoryObjectId
---------------------------------------------------------------------------------

image

Teamsをみても作成されていることを確認できました。 image

■おまけ -- 所有者管理

office365グループのOwnerとTeamの所有者も連動するようです。
したがって、所有者変更管理する場合も、Office365グループを編集するとよい感じです。 例えば、営業部で役職がSEの人のみオーナーとする場合はこんな具合です。 
---------------------------------------------------------------------------------
$depart=Get-AzureADUser -Filter "startswith(department,’営業部')"
$OwnerUser= $depart | ?{ $_.jobtitle -eq "SE" }

$gid=get-unifiedGroup -identity testdynamic
$OwnerUser | % { Add-UnifiedGroupLinks -Identity $gid.displayname -LinkType owners `
-links $_.userprincipalname }
---------------------------------------------------------------------------------

■おまけ2 -- チーム設定

チャネル作成や、チーム設定などのコマンドも用意されています。
Teams での PowerShell の概要
https://docs.microsoft.com/ja-jp/microsoftteams/teams-powershell-overview
チームごとの各種設定や、事前チーム作成もできそうです。

■まとめ

・Office365グループとTeamsのチーム管理は連動している
・Office365グループは動的グループ作成が可能であり、Teamsメンバーも連動できる
・Powershellによって、Office365グループ経由でTeamsの一括作成が可能

スポンサーリンク

スポンサーリンク