株式会社ネットワールドのエンジニアがお届けする技術情報ブログです。
各製品のエキスパートたちが旬なトピックをご紹介します。

【M365】テナント内の複数ユーザーに、ライセンスを一括で割り当てる

みなさん、こんにちは!ネットワールドSEの松原です。

今回はM365のテナント内の複数ユーザーにライセンスを一括で割り当てる方法を紹介します。

※複数ユーザーにライセンスを割り当てたいとき、よくある方法としてはグループ単位でのライセンス割り当てがありますが、今回はユーザー単位で割り当てたいときに、コマンドで一括で割り当てる方法を紹介します。



1.【事前準備】Microsoft Graph APIに接続

①以下の記事を参考に、Microsoft Graph PowerShell用のモジュールのインストールをします。

※すでにインストール済みの場合は②以降を実施ください。

learn.microsoft.com

 

②Windows Powershellを右クリックし、[管理者として実行]をクリックします。

 

③以下のコマンドを実行するとサインイン画面が出てくるため、管理者ユーザーのIDとパスワードを入力します。

【コマンド】

Connect-MgGraph -Scopes "Organization.Read.All","User.ReadWrite.All" 

画面イメージ




④以下のコマンドを実行し、モジュールをインポートします。

【コマンド】

Import-Module -Name Microsoft.Graph.Users

 

2.テナントのライセンス情報を確認する

以下のコマンドを実行し、テナントで契約しているライセンスのSKU IDを確認します。

【コマンド】

Get-MgSubscribedSku | ft Id, SkuId, SkuPartNumber -Wrap

 

今回の例では以下の3つのライセンス情報が記載されています。

  • Microsoft Power Automate Free
    • f30db892-07e9-47e9-837c-80727f46fd3d
  • Microsoft Teams Enterprise
    • 7e31c0d9-9551-471d-836f-32ee72be4a01
  • Microsoft 365 E5(Teamsなし)
    • 18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e

画面イメージ



 

3.(ライセンスの中に無効にしたいサービスがある場合)ライセンスに含まれているサービスを確認する

割り当てたいライセンスの中にある一部のサービスを無効にしたい場合は、以下のコマンドを実行してライセンスに含まれるサービスを確認します。無効にしたいサービスのServicePlanIDをメモしておきます。

【コマンド】

Get-MgSubscribedSku | ForEach-Object {
    $sku = $_
    $sku.ServicePlans | Select-Object @{Name="SkuPartNumber";Expression={$sku.SkuPartNumber}}, ServicePlanName, ServicePlanId
}

画面イメージ



4.ライセンスを割り当てたいユーザーを記載したcsvファイルを用意する

ライセンスを割り当てたいユーザーについて、csvファイルを用意します。

csv例

UserPrincipalName
cloud01@hogehoge.com
cloud02@hogehoge.com

名前を付け、任意のパスに保存します。

 

5.ライセンスを割り当てるユーザーに、[利用場所]が設定されているか確認する

ライセンスを割り当てるにあたって、あらかじめユーザーに利用場所が設定されている必要があります。Entra ID管理センターで設定確認ができるため、確認方法を紹介します。

①管理者アカウントでEntra ID管理センターにサインインします。

URL:entra.microsoft.com

 

②左のタブから[ユーザー]をクリックします。

 

③ライセンスを割り当てるユーザーを検索し、[プロパティ]を開きます。[利用場所]に国が記載されているか確認してください。記載されていなかった場合は、④手順を実施ください。記載されている場合はそのまま手順6.に進んでください。

 

④(③で[利用場所]が設定されていなかった場合)コマンドでユーザーの利用場所を設定します。

  1. 利用場所を設定したいユーザーのcsvファイルを用意します。

    csv例

    UserPrincipalName
    cloud01@hogehoge.com

    cloud02@hogehoge.com

  2. 以下のコマンドを実行し、利用場所を設定します。今回は日本想定なのでJPを指定します。

    【コマンド】

    Import-Csv "<csvファイルのパス>" | ForEach-Object {

        Set-MgUser -UserId $_.UserPrincipalName -UsageLocation "JP"

    }

 

⑤ ④手順が完了したら、もう一度Entra ID管理センターに入り、ページを更新してユーザーのプロパティに[利用場所]が設定されていることを確認します。

 

6.ライセンスを割り当てる

以下のコマンドを実行し、ライセンスの割り当てを実施します。

※無効にするサービスプラン、および削除するライセンスが無い場合でも、実行例のように「DisabledPlans = @()」および「-RemoveLicenses @() 」はコマンドに記載するようにします。

 

【コマンド】

$License1 = New-Object -TypeName Microsoft.Graph.PowerShell.Models.MicrosoftGraphAssignedLicense -Property @{SkuId = "<割り当てるライセンスのSKU ID>"; DisabledPlans = @("<無効にするサービスプランのservicePlanID>")} 

Import-Csv <csvファイルのパス> | ForEach-Object { Set-MgUserLicense -UserId $_.UserPrincipalName -AddLicenses @($License1) -RemoveLicenses @("<削除するライセンスのSKU ID>") }

 

【実行例】

以下の例は、Microsoft Power Automate Free、Microsoft Teams Enterprise、Microsoft 365 E5(Teamsなし)の3つのライセンスについて割り当てるコマンド例です。

$License1 = New-Object -TypeName Microsoft.Graph.PowerShell.Models.MicrosoftGraphAssignedLicense -Property @{SkuId = "f30db892-07e9-47e9-837c-80727f46fd3d"; DisabledPlans = @()} 
$License2 = New-Object -TypeName Microsoft.Graph.PowerShell.Models.MicrosoftGraphAssignedLicense -Property @{SkuId = "7e31c0d9-9551-471d-836f-32ee72be4a01"; DisabledPlans = @()} 
$License3 = New-Object -TypeName Microsoft.Graph.PowerShell.Models.MicrosoftGraphAssignedLicense -Property @{SkuId = "18a4bd3f-0b5b-4887-b04f-61dd0ee15f5e"; DisabledPlans = @()} 

Import-Csv C:\temp\Users.csv | ForEach-Object { Set-MgUserLicense -UserId $_.UserPrincipalName -AddLicenses @($License1, $License2, $License3) -RemoveLicenses @() }

 

以上でライセンス割り当て完了です!