【 Set-MgUserLicense 】コマンドレット――Azure Active Directoryユーザーにライセンスを割り当てるWindows PowerShell基本Tips(54)

本連載は、PowerShellコマンドレットについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は「Set-MgUserLicense」コマンドレットを解説します。

» 2022年12月22日 05時00分 公開
[国井傑株式会社エストディアン]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「Windows PowerShell基本Tips」のインデックス

連載目次

 本連載では、Windows PowerShellの基本的なコマンドレットについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、「Azure Active Directory」(Azure AD)ユーザーにライセンスを割り当てる「Set-MgUserLicense」コマンドレットです。

Set-MgUserLicenseコマンドレットとは?

 「Set-MgUserLicense」は、PowerShellを利用してAzure ADユーザーにライセンスを割り当てるためのコマンドレットです。自社で購入したライセンスを各Azure ADユーザーに割り当てたり、購入したライセンスの中から一部のライセンスだけを割り当てたりすることができます。

 なお、Set-MgUserLicenseコマンドレットは、本連載第45回で解説した「Connect-MgGraph」コマンドレットで「Connect-MgGraph -Scopes "User.ReadWrite.All"」を実行して、Azure ADへの接続とアクセス許可を与えておくことが前提条件になります。

Set-MgUserLicenseコマンドレットの書式

Set-MgUserLicense [オプション]


Set-MgUserLicenseコマンドレットの主なオプション

オプション 意味
-UserId ライセンスを割り当てるAzure ADユーザー(UPN形式での指定可)を指定する
-AddLicenses ライセンスを追加する。省略可能
-RemoveLicenses ライセンスを削除する。省略可能


ユーザーに特定のライセンスを割り当てる

 Set-MgUserLicenseコマンドレットでは、「-UserId」オプションでライセンスを割り当てるユーザー、「-AddLicenses」オプションで割り当てるライセンス、「-RemoveLicenses」オプションで削除するライセンスをそれぞれ指定します(画面1)。

 -AddLicensesオプションと-RemoveLicensesオプションの後には「ヒア文字列」と呼ばれる「@」から始まる書式で、割り当てるライセンス/削除するライセンスを指定します。ライセンスは「SKU ID」と呼ばれるIDで指定する必要があり、自社で使用しているSKU IDは「Get-MgSubscribedSku |fl」コマンドレットで確認できます(画面2)。

 SKU IDに対応するライセンス種類は、Sku PartNumber属性から確認できます。Sku PartNumber属性に対応するライセンス名は、MicrosoftのWebサイト「ライセンスのための製品名とサービスプラン識別子」(Microsoft Learn)で確認できます。

コマンドレット実行例

Set-MgUserLicense -UserId naoki@ij6103.onmicrosoft.com -AddLicenses @{SkuId="06ebc4ee-1bb5-47dd-8120-11324bc54e06"} -RemoveLicenses @()

画面1 画面1 Set-MgUserLicenseコマンドレットでユーザーに特定のライセンスを割り当てた実行例

 上記コマンドレット実行例では、Set-MgUserLicenseコマンドレットに続けて、-UserIdオプションでユーザーを指定しています。その後、-AddLicensesオプションに続けて「@{SkuId="xxx"}」と記述して、割り当てるライセンスを指定しています。

 なお、「@」で始まるヒア文字列の部分には、「Get-MgSubscribedSku |fl」コマンドレットで事前に調べたSKU IDを指定しています。その後、-RemoveLicensesオプションに続けて「@()」と記述することで、削除するライセンスがないことを確認しています。ちなみに、削除するライセンスがない場合でも、-RemoveLicensesオプションは必ず指定しなければならないことに注意してください。

コマンドレット実行例

Get-MgSubscribedSku |fl

画面2 画面2 「Get-MgSubscribedSku |fl」コマンドレットを使うことで、自社で使用しているSKU IDを確認できる

 上記コマンドレット実行例では、Get-MgSubscribedSkuコマンドレットに続けて「|fl」を記述し、全ての属性が表示されるようにしています。その結果、SkuPartNumber属性に書かれた「SPE_E5」に対応するSKU IDは、「06ebc4ee-1bb5-47dd-8120-11324bc54e06」であることが確認できました。

 なお、SPE_E5はMicrosoftのWebサイトから「Microsoft 365 E5」ライセンスであることが確認できるので、Microsoft 365 E5ライセンスのSKU IDが「06ebc4ee-1bb5-47dd-8120-11324bc54e06」であることが分かります。



ユーザーから特定のライセンスを削除する

 Set-MgUserLicenseコマンドレットでユーザーから特定のライセンスを削除するには、-RemoveLicensesオプションで削除するライセンスを指定します(画面3)。

コマンドレット実行例

Set-MgUserLicense -UserId naoki@ij6103.onmicrosoft.com -AddLicenses @() -RemoveLicenses @("06ebc4ee-1bb5-47dd-8120-11324bc54e06")

画面3 画面3 Set-MgUserLicenseコマンドレットでユーザーから特定のライセンスを削除した実行例

 上記コマンドレット実行例では、-UserIdオプションでユーザーを指定した後、-AddLicensesオプションに続けて「@()」、さらに-RemoveLicensesオプションに続けて「@("SkuId")」と記述して削除するライセンスのSKU IDを指定しています。

 なお、ライセンスを割り当てる場合は「@{SkuId="SkuId"}」という書き方でしたが、削除する場合は「@("SkuId")」という書き方に変化する点に注意してください。



特定のサービスプランを無効にしてライセンスを割り当てる

 「Office 365」や「Microsoft 365」のライセンスには、複数のサービス(サービスプラン)が含まれます。これらのサービスプランのうち、特定のサービスプランを割り当てずに(無効にして)、ライセンスを割り当てる場合は、-AddLicensesオプションで割り当てるライセンスと無効にするサービスプランをそれぞれ指定します(画面4)。

コマンドレット実行例

$Sku=Get-MgSubscribedSku | Where-Object {$_.SkuPartNumber -eq "SPE_E5"}
$disabledPlans=$Sku.ServicePlans | Where-Object {$_.ServicePlanName -eq "sway"}
$addLicenses = @(
  @{SkuId = $Sku.SkuId
  DisabledPlans = $disabledPlans.ServicePlanId
  }
  )
Set-MgUserLicense -UserId naoki@ij6103.onmicrosoft.com -AddLicenses $addLicenses -RemoveLicenses @()

画面4 画面4 サービスプランとして「sway」を無効にしてライセンスを割り当てる実行例

 上記コマンドレット実行例では、1行目で割り当てるライセンス(ここではMicrosoft 365 E5)のSKU情報を取得し、2行目では$Sku変数からServicePlans情報にアクセスして、「sway」の名前が含まれるServicePlansの情報だけを取り出しています。

 また、3〜7行目では$addLicenses変数を作成し、「SkuId = 」に続けてMicrosoft 365のSKU ID、「DisabledPlans = 」に続けて無効にするサービスプランをそれぞれ指定しました。

 8行目のSet-MgUserLicenseコマンドレットで、-UserIdオプションでユーザーを指定した後、-AddLicensesオプションに続けて$addLicenses変数を指定しています。これにより、$addLicenses変数で指定した内容に基づいて「sway」以外のMicrosoft 365 E5ライセンスが割り当てられます。

 なお、「サービスプラン名」については1行目のコマンドレットを実行後、「$sku.ServicePlans」と実行することで一覧を確認できます。

筆者紹介

国井 傑(くにい すぐる)

株式会社エストディアン代表取締役。1997年からマイクロソフト認定トレーナーとして、Azure Active DirectoryやMicrosoft 365 Defenderなど、クラウドセキュリティを中心としたトレーニングを提供している。2007年からMicrosoft MVP for Enterprise Mobilityを連続して受賞。なお、テストで作成するユーザーアカウントには必ずサッカー選手の名前が登場するほどのサッカー好き。


Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。