Microsoft Graph PowerShell を使ったライセンス付与とはく奪

はじめに

今回はMicrosoft Graph PowerShellを使ったライセンスの付与とはく奪について説明します。

事前準備

Microsoft Graph PowerShellを使うために、AzureADアプリの登録を行います。

詳細な手順は下記の記事の「アプリ認証(クライアント証明書)」を参考にしていただき、今回は下記のアクセス許可を設定して、AzureADアプリを登録します。

Microsoft Graph の認証方法 - JBS Tech Blog

  • アクセス許可の種類:アプリケーションの許可
  • アクセス許可:User.ReadWrite.All、Directory.ReadWrite.All

ライセンス付与とはく奪

ライセンス情報の確認

テナントで購入しているライセンスを確認するコマンドは下記の通りです。

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

※ -Wrap引数は、出力結果を途切れず折り返し表示するためのパラメーターです。

出力例

ライセンス付与時に無効化したいライセンスオプションを指定するシナリオがあります。ライセンスオプションを確認するためのコマンドは下記の通りです。

Get-MgSubscribedSku -SubscribedSkuId "ライセンスID" | Select-Object -ExpandProperty ServicePlans | ft ServicePlanId, ServicePlanName

出力例

ユーザーのロケーション設定

ライセンス付与前にユーザーのロケーション設定が必要です。

ユーザーのロケーションを設定するコマンドは下記の通りです。コマンド例では"JP"(日本)を設定しています。

Update-MgUser -UserId <対象ユーザーの UPN> -UsageLocation "JP"

ライセンスの付与

ユーザーにライセンスを付与するコマンドは下記の通りです。

このコマンドではライセンスオプションはすべて有効となります。

$License1 = New-Object -TypeName Microsoft.Graph.PowerShell.Models.MicrosoftGraphAssignedLicense -Property @{SkuId = "<付与するライセンスの SkuId>"}
Set-MgUserLicense -UserId "<対象ユーザーの UPN>" -AddLicenses @($License1) -RemoveLicenses @()

複数のライセンスを同時に付与するコマンドは下記の通りです。AddLicensesパラメーターにカンマ区切りでライセンスオブジェクトを設定します。

Set-MgUserLicense -UserId "<対象ユーザーの UPN>" -AddLicenses @($License1, $License2) -RemoveLicenses @()

特定のライセンスオプションを無効化して、特定のライセンスを付与するコマンドは下記の通りです。

このコマンドはライセンス付与時、または付与済みライセンスのライセンスオプションの無効化時でも同一のコマンドとなります。

$License1 = New-Object -TypeName Microsoft.Graph.PowerShell.Models.MicrosoftGraphAssignedLicense -Property @{SkuId = "<付与するライセンスの SkuId>"; DisabledPlans = @("<無効化するライセンスオプションの ServicePlanId>")}
Set-MgUserLicense -UserId "<対象ユーザーの UPN>" -AddLicenses @($License1) -RemoveLicenses @()

ライセンスのはく奪

ユーザーからライセンスをはく奪するコマンドは下記の通りです。

Set-MgUserLicense -UserId "<対象ユーザーの UPN>" -AddLicenses @() -RemoveLicenses @("<はく奪するライセンスの SkuId>")

ライセンスの変更

付与済みのライセンスをはく奪し、別のライセンスを付与するコマンドは下記の通りです。

$License1 = New-Object -TypeName Microsoft.Graph.PowerShell.Models.MicrosoftGraphAssignedLicense -Property @{SkuId = "<新しく付与ライセンスの SkuId>"}
Set-MgUserLicense -UserId "<対象ユーザーの UPN>" -AddLicenses @($License1) -RemoveLicenses @("<現在付与済みのライセンス>")

このコマンドは、ライセンスの切り替え時に使用することを推奨します。

ライセンス切り替え時は同じライセンスオプションを持ったライセンスを付与、はく奪することが多いですが、同じライセンスオプションを持ったライセンスをはく奪前に付与することはできません。はく奪と付与を別のコマンドで実施した場合、はく奪から付与前の時間、およびMicorsoft 365内の処理の時間の間ユーザーがサービスを利用することができなくなります。そのため、はく奪と付与を同時に行うことで、ユーザーのサービス利用時間の停止を防ぐことができます。

ユーザーに付与されたライセンスの確認

ユーザーに付与されたライセンスを確認するコマンドは下記の通りです。

Get-MgUserLicenseDetail -UserId "<対象ユーザーの UPN>"

まとめ

今回はMicrosoft Graph PowerShellを使ったライセンス付与について、説明しました。

ライセンスやライセンスオプションを指定する際はID指定となるため、少しわかり辛い部分もあったかとは思いますが、付与、はく奪自体はSet-MgUserLicenseコマンドで一括操作できるため、簡単に操作することができます。

実運用でスクリプトを組む際は、ライセンスの残数チェックやライセンスオプションの重複が起きないような処理を組み込むことを推奨します。

執筆担当者プロフィール
梅村 聡

梅村 聡(日本ビジネスシステムズ株式会社)

CS本部DI部CAG所属。主にMicrosoft 365関連の開発を担当。趣味はバレーボールとアニメ鑑賞。

担当記事一覧