Office365ライセンスのサービスの詳細をPowerShellを使用して一括で有効化する方法(Microsoft Teamsの場合)

2022/08/22
 
この記事を書いている人 - WRITER -
ブログ運営者のtkjzblogです。 仕事柄新しいシステムに触れることが多いです。 Windows、Linux(RHEL)がメインです。その他、VMwareやOffice365など仮想環境やクラウド環境も少しですが触れることがあります。 いろいろ忘れがちのため、このサイトへ情報を書き溜めていきたいと思います。 どうぞ、よろしくお願い致します。

概要

Microsoft Teamsを一括で有効化しなければいけない機会があり、その時に実行したコマンドを紹介させていただきます。
方法はいろいろあるかもしれませんが、Microsoft社公開情報を参考にさせていただきました。
有効化するスクリプトファイルと有効化したいユーザーのUPN(User Principal Name)を記載したファイルを準備し、スクリプトファイルを実行するというものです。

参考:Microsoft Planner を PowerShell を使用して一括で有効化、無効化する方法について

https://docs.microsoft.com/ja-jp/archive/blogs/sharepoint_support/office-365-planner-powershell-enable-disable

スクリプトファイルの作成

以下がスクリプトファイルの内容です。今回はファイル名を EnableTeamsLicense.ps1 として保存します。
Microsoft Teamsを有効化するために $service_name へ TEAMS1 を入力しています。
TEAMS1 という名前は、ライセンスに含まれるサービスの詳細の1つになります。
サービスの詳細の確認方法は、以下を参考にしてください。

Office365で割り当てられているライセンスのサービスの詳細を表示するコマンド

EnableTeamsLicense.ps1

 
$service_name = "TEAMS1"

# 改行単位で UPN が記述されたユーザー一覧から取得
# $users.Clear() 
$users = New-Object System.Collections.ArrayList
$list = Get-Content "UserList.txt"
foreach ($temp in $list)
{
    $users = $users + (Get-MsolUser -UserPrincipalName $temp)
}
 
# ユーザー毎のライセンス/サービスの確認と変更
foreach ($user in $users)
{
    write-host ("Processing " + $user.UserPrincipalName)
    $licensetype = $user | Select-Object -ExpandProperty Licenses | Sort-Object { $_.Licenses }
    
    foreach ($license in $user.Licenses) 
    {
        write-host (" " + $license.accountskuid)
 
        $includeService = $false
        $disableplan = @()
 
        foreach ($row in $($license.ServiceStatus)) {
            if ( $row.ServicePlan.ServiceName -eq $service_name ) { $includeService=$true }
            if ( $row.ProvisioningStatus -eq "Disabled" -and $row.ServicePlan.ServiceName -ne $service_name) {
                $disableplan += $row.ServicePlan.ServiceName
            }
        }
        
        # 指定したサービス が含まれる SKU の場合、現在の設定に加え、指定したサービス を有効化 (Enable)
        if ($includeService){
            write-host ("      found Target service in " + $license.accountskuid)
            write-host ("      current disabled services : " + $disableplan )
            $x = New-MsolLicenseOptions -AccountSkuId $license.accountskuid -DisabledPlans $disableplan
            Set-MsolUserLicense -UserPrincipalName $user.UserPrincipalName -LicenseOptions $x
        }
        
    }
}

また、有効化したいユーザーのUPN(User Principal Name)を記載するファイル名は、 UserList.txt としています。任意のファイル名で結構です。

有効化したいユーザーのUPN(User Principal Name)を記載するファイルの作成

今回は、UserList.txt としています。UPNを1行につき、1つ記載します。

UserList.txt

testuser01@example.com
testuser02@example.com
testuser03@example.com
testuser04@example.com
testuser05@example.com

AzureActiveDirectoryへコマンドで接続

スクリプトファイルを実行する前にAzureActiveDirectoryへコマンドで接続しておきます。
Windows PowerShell コマンド プロンプトを管理者で実行し、以下コマンドを入力します。

Connect-MsolService

認証ウィンドウが表示されるのでOffice365管理者権限ユーザーのID、パスワードで認証します。

エラーなくWindows PowerShell のプロンプトが返されれば接続完了です。

スクリプトファイルの実行

スクリプトファイルとUPNを記載したファイルを同じフォルダ内(例:c:\test)に保存します。

Windows PowerShell でスクリプトファイルなどが保存されたフォルダへ移動します。(例:cd c:\test)

以下コマンドでスクリプトファイルを実行すると、ライセンスの状況などが結果として表示され、 Microsoft Teamsが有効化されます。

.\EnableTeamsLicense.ps1

長ったらしいスクリプトですが、なぜか表示されたものから Microsoft Teams が有効化されたことはわかりません・・・
そのため正常に反映されたか確認するために別途確認用スクリプトファイルを作成します。

確認用スクリプトファイルは次の記事で紹介しています。

Office365ライセンスのサービスの詳細をPowerShellで一括有効化した後の確認方法(Microsoft Teamsの場合)

まとめ

今回は一括で有効化するスクリプトを紹介しましたが、一括で無効化するスクリプトも別の記事で紹介させていただきます。これもMicrosoft社公開情報となりますが・・・

この記事を書いている人 - WRITER -
ブログ運営者のtkjzblogです。 仕事柄新しいシステムに触れることが多いです。 Windows、Linux(RHEL)がメインです。その他、VMwareやOffice365など仮想環境やクラウド環境も少しですが触れることがあります。 いろいろ忘れがちのため、このサイトへ情報を書き溜めていきたいと思います。 どうぞ、よろしくお願い致します。

Copyright© しっぱいはせいこうのもと , 2020 All Rights Reserved.