PowerShellによるTeamsアプリ設定の一括変更手順

管理者の皆さん、Teamsアプリの管理方法を”アプリ中心の管理”に移行して「一つ一つのアプリを設定するのが大変...」と感じていませんか?

従来のアクセス許可ポリシーでは複数のアプリの可用性を1つのポリシーで設定できましたが、”アプリ中心の管理”ではTeamsで利用できるすべてのアプリごとに可用性を設定する必要があります。 例えば、10個のアプリをユーザー10人にのみ許可する場合、アプリの可用性を「特定のユーザーまたはグループ」に設定して利用可能なユーザーに10名追加する作業を、10回繰り返し行わなければなりません。

今回はこの作業を効率化するPowerShellスクリプトをご紹介します!

※本記事で案内している設定内容および変更方法は、作成日時点でのものであり、マイクロソフトの方針により変更される場合があります。

初めに

アプリ中心の管理とは

アプリ中心の管理とは、Teamsで使用できるアプリの新しい管理方法で、すべてのアプリごとに、ユーザーやグループの可用性を細かく制御することが可能です。

従来のアクセス許可ポリシーに代わり、アプリごとにアクセス権を設定できるため組織のニーズに応じた柔軟な管理が可能になります。

一方で、すべてのアプリに対して可用性設定が必要となり、以前より管理の際の手動設定の手間が増加しました。

アクセス許可ポリシー

Teamsで使用できるアプリのアクセス許可設定を「アクセス許可ポリシー」に設定し、そのポリシーをユーザーやグループに割り当てることで制御します。

例えば、新しいユーザーに複数のアプリの可用性を設定したい場合、複数のアプリの可用性が設定された1つのアクセス許可ポリシーをユーザーに割り当てる必要があります。

アプリ中心の管理

Teamsで使用できるすべてのアプリ毎に可用性を設定し、制御します。

例えば、新しいユーザーに複数のアプリの可用性を設定したい場合、許可したいアプリごとに、利用を許可するユーザー欄に新しいユーザーを追加する必要があります。

learn.microsoft.com

Teamsにおけるアプリのアクセス制御

管理者は、以下の方法でアプリのアクセスを制御することが可能です。

方式 対象 ユースケース
組織全体のアプリ設定 組織レベル この設定を使用して、組織内の関連アプリの使用を許可します。
アプリをブロックまたはブロック解除する アプリレベル この設定を使用して、組織内のいくつかの特定のアプリをブロックします。
アプリのアクセス許可ポリシー または アプリ中心の管理*1 ユーザーレベル すべてのユーザーにアプリを使用させるか、特定のユーザーにアプリを使用させます

今回ご紹介するコマンドで操作可能な方式は、アプリの状態設定「アプリをブロックまたはブロック解除する」、アプリの可用性設定「アプリ中心の管理」となります。

  • 状態設定
    • ブロック
      • どのユーザーも使用できません
    • ブロック解除
      • 可用性で設定されたユーザーがアプリにアクセスできます
  • 可用性設定
    • 全員(Everyone)
      • すべての組織ユーザー、新しいユーザー、ゲストが使用できます
    • 特定のユーザーまたはグループ(Specific users or groups)
      • アプリを使用できるのは、選択したユーザーとグループだけです
      • サポートされるグループの種類は、セキュリティ グループ、Microsoft 365 グループ、動的ユーザー メンバーシップ グループ、入れ子になったグループ、配布リストです
    • 該当者なし(No one)
      • どのユーザーも使用できません

learn.microsoft.com

前提条件

アプリ中心の管理への移行

アプリ中心の管理を利用しているテナントでのみ動作するコマンドの紹介となります。

※ 移行していない場合は、以下のエラーが発生します。

Microsoft Teams PowerShell モジュールのインストール

本記事のコマンドを実行する場合、Microsoft Teams PowerShellモジュールがインストールされている必要があります。

インストールされていない場合は、以下のコマンドを実施し、インストールしてください。

Install-Module -Name PowerShellGet -Force -AllowClobber
Install-Module -Name MicrosoftTeams -Force -AllowClobber

PowerShell Microsoft Teamsインストールする - Microsoft Teams | Microsoft Learn

基本となるコマンドレット

Get-AllM365TeamsApps

組織内のすべてのTeamsアプリの状態、可用性の設定値、可用性情報の最終更新日/最終編集者、インストール情報などの情報を取得します。

Get-ALLM365TeamsApps (MicrosoftTeamsPowerShell) | Microsoft Learn

Get-M365TeamsApp

Teamsアプリの状態、可用性の設定値、アプリが有効になっているユーザー/グループ、インストール情報を取得します。

Get-M365TeamsApp (MicrosoftTeamsPowerShell) | Microsoft Learn

Update-M365TeamsApp

ユーザーとグループを追加または削除したり、割り当ての種類を変更したりすることで、アプリの状態と可用性を変更できます。

Update-M365TeamsApp (MicrosoftTeamsPowerShell) | Microsoft Learn

事前準備

事前準備として、今回利用する検証環境からアプリ情報を取得して加工し、Teamsに接続します。

アプリ情報出力

アプリの情報を一覧を取得しておきます。

  1. Microsoft Teams管理センターにアクセスします。
  2. 左ペインから [Teams のアプリ] - [アプリを管理] をクリックします。
  3. アプリの一覧の右上にある CSVアイコンをクリックし、CSVをダウンロードします。

CSVファイルの準備

コマンド実行のために、各作業の対象とするアプリ一覧が記載されているCSVファイルを作成します。

  1. アプリ情報出力でエクスポートしたCSVファイルを活用し作業対象のアプリだけに絞り込み、CSVファイルを作成します。
  2. アプリ IDが記載されている列の列名を「ID」と変更します。
  3. ファイルの種類を「CSV UTF-8」とし、任意の場所に保存します。

Microsoft Teams への接続

PowerShellを開き、Teamsへ接続します。

  1. PowerShellを[管理者として実行]モードで開きます。
  2. 以下コマンドを実行し、Microsoft Teamsへ接続します。
    Connect-MicrosoftTeams
    

可用性の設定

「特定のユーザーまたはグループ」に設定する

複数のアプリに対して、可用性を「特定のユーザーまたはグループ」に設定し、特定のユーザーとグループを利用可能にしたい場合、以下を実施します。

  1. アプリの利用を許可させたいユーザーのGUID一覧のファイル、グループのGUID一覧のファイルを作成します。
  2. それぞれGUIDが記載されている列名を「UserGUID」、「GroupGUID」に変更します。
  3. それぞれ種類を「CSV UTF-8」とし、任意の場所に保存します。
  4. 以下コマンドを実行し、作業対象のCSVを読み込んでアプリの可用性を「特定のユーザーまたはグループ」に設定します。
        $AddAppsList = Import-Csv -Path "作業対象アプリCsv ファイルの保存先\作業対象ファイル名.csv"
        $UserList = Import-Csv -Path "UserGUID 一覧Csv ファイルの保存先\UserGUID 一覧ファイル名.csv"
        $GroupList = Import-Csv -Path "GroupGUID 一覧Csv ファイルの保存先\GroupGUID 一覧ファイル名.csv"
        $UserGuids = @($UserList.UserGUID)
        $GroupGuids = @($GroupList.GroupGUID)
        $AddAppsList | ForEach-Object {
            Update-M365TeamsApp -Id $_.ID -IsBlocked $false -AppAssignmentType UsersAndGroups -OperationType Add -Users $UserGuids -Groups $GroupGuids
        }
    
  5. 以下コマンドを実行し、変更後の状態を出力して確認します。
        $Results = @()
        $AddAppsList | ForEach-Object {
            $app = Get-M365TeamsApp -Id $_.ID
            $app.AvailableTo | ForEach-Object {
                $userIds = $_.Users | ForEach-Object { $_.Id } | Sort-Object | Get-Unique
                $userIdsString = $userIds -join ";"
                $groupIds = $_.Groups | ForEach-Object { $_.Id } | Sort-Object | Get-Unique
                $groupIdsString = $groupIds -join ";"
                $Results += [PSCustomObject]@{
                    Id = $app.Id
                    AppAssignmentType = $_.AssignmentType
                    Users = $userIdsString
                    Groups = $groupIdsString
                }
            }
        }
    
  6. すべてのアプリIdのAppAssignmentTypeの値が"UsersAndGroups"(ユーザーまたはグループ)になっていることを確認します。

「全員」に設定する

複数のアプリに対して、可用性を「全員」に設定し、組織内のユーザー全員に利用を許可したい場合、以下を実施します。

  1. 以下コマンドを実行し、作業対象のCSVを読み込んでアプリの可用性を「全員」に設定します。
    $EveryoneAppsList = Import-Csv -Path "作業対象アプリCsv ファイルの保存先\作業対象ファイル名.csv"
    $EveryoneAppsList | ForEach-Object {Update-M365TeamsApp -Id $_.ID -AppAssignmentType Everyone}
    
  2. 以下コマンドを実行し、変更後の状態を出力して確認します。
    $Results = @()
    $EveryoneAppsList | ForEach-Object {
        $app = Get-M365TeamsApp -Id $_.ID
        $app.AvailableTo | ForEach-Object {
        $Results += [PSCustomObject]@{
                    Id = $app.Id
                    AppAssignmentType = $_.AssignmentType
            }
        }
    }
    $Results | Export-Csv -Path "Csv ファイルの保存先\結果ファイル名.csv" -NoTypeInformation -Encoding UTF8
    
  3. すべてのアプリIdのAppAssignmentTypeの値が"EveryOne"(全員)になっていることを確認します。

「該当者なし」に設定する

複数のアプリに対して、可用性を「該当者なし」に設定し、組織内のユーザー全員に利用を許可したくない場合、以下を実施します。

  1. 以下コマンドを実行し、作業対象のCSVを読み込んでアプリの可用性を「該当者なし」に設定します。
    $NooneAppsList = Import-Csv -Path "作業対象アプリCsv ファイルの保存先\作業対象ファイル名.csv"
    $NooneAppsList | ForEach-Object {Update-M365TeamsApp -Id $_.ID -AppAssignmentType Noone}
    
  2. 以下コマンドを実行し、変更後の状態を出力して確認します。
    $Results = @()
    $NooneAppsList | ForEach-Object {
        $app = Get-M365TeamsApp -Id $_.ID
        $app.AvailableTo | ForEach-Object {
        $Results += [PSCustomObject]@{
                    Id = $app.Id
                    AppAssignmentType = $_.AssignmentType
            }
        }
    }
    $Results | Export-Csv -Path "Csv ファイルの保存先\結果ファイル名.csv" -NoTypeInformation -Encoding UTF8
    
  3. すべてのアプリIdのAppAssignmentTypeの値が"Noone"(該当者なし)になっていることを確認します。

ブロックの設定

一括でアプリをブロックする

複数のアプリに対して、状態を「ブロック」に変更し、組織内のユーザー全員に利用を許可したくない場合、以下を実施します。

  1. 以下コマンドを実行し、アプリをブロックします。
    $BlockAppsList = Import-Csv -Path "作業対象アプリCsv ファイルの保存先\作業対象ファイル名.csv"
    $BlockAppsList | ForEach-Object {Update-M365TeamsApp -Id $_.ID -IsBlocked $true}
    
  2. 以下コマンドを実行し、変更後の状態を出力して確認します。
    $BlockAppsList | ForEach-Object {Get-M365TeamsApp -Id $_.ID | Select-Object Id, IsBlocked} | Export-Csv -Path "Csv ファイルの保存先\結果ファイル名.csv" NoTypeInformation -Encoding UTF8 
    
  3. すべてのアプリIdのIsBlocked列の値が"TRUE"(ブロック)になっていることを確認します。

一括でアプリをブロック解除する

複数のアプリに対して、状態を「ブロック解除」に設定し、可用性で設定したアクセス許可をアプリに適用させたい場合、以下を実施します。

  1. 以下コマンドを実行し、アプリのブロックを解除します。
    $UnBlockAppsList = Import-Csv -Path "作業対象アプリCsv ファイルの保存先\作業対象ファイル名.csv"
    $UnBlockAppsList | ForEach-Object {Update-M365TeamsApp -Id $_.ID -IsBlocked $false}
    
  2. 以下コマンドを実行し、変更後の状態を出力して確認します。
    $UnBlockAppsList | ForEach-Object {Get-M365TeamsApp -Id $_.ID | Select-Object Id, IsBlocked} | Export-Csv -Path "Csv ファイルの保存先\結果ファイル名.csv" NoTypeInformation -Encoding UTF8 
    
  3. すべてのアプリIdのIsBlocked列の値が"FALSE"(ブロック解除)になっていることを確認します。

まとめ

本記事では、PowerShellコマンドを用いて、アプリ中心の管理にて複数のアプリの可用性や状態(ブロック)を一括で設定する方法をご紹介しました。ぜひ参考にしてみてください。  

今回ご紹介した内容についてご不明点がございましたら、<#LSB20250319>を添えてLive Supportへお問い合わせくださいますようお願いいたします。

※Live Support for Office 365をご契約いただいているお客様のみお問い合わせいただくことが可能ですのでご了承ください

*1:アクセス許可ポリシーはアプリ中心の管理へ移行後廃止されます

PR:マイクロソフト製品専門のエンジニアがお客さまの要望に合わせて柔軟かつ幅広く支援するタイムチャージ制サポートサービスのご紹介

JBSサービス"Live Support"は、豊富な構築実績に基づき、各マイクロソフト製品専門のエンジニアがお客さまの要望に合わせて柔軟かつ幅広く支援するタイムチャージ制のサポートサービスです。

情報システム部のお客様向けに、Microsoft 365 の運用で直面する課題に対し、問い合わせ対応の形で技術的なご支援をしております。ただお問い合わせに一問一答形式で回答するだけでなく、Teams会議を通じての技術相談や活用に関するアドバイスなど、柔軟にご利用いただけます。

Live Supportについてご興味がございましたら、下記ページよりお問い合わせください。

Live Support|JBS 日本ビジネスシステムズ株式会社

執筆担当者プロフィール
齋藤 梨乃

齋藤 梨乃(日本ビジネスシステムズ株式会社)

CMS本部でMicrosoft 365 中心に日々勉強しています。

担当記事一覧