本連載は、PowerShellコマンドレットについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は「Set-MgUserLicense」コマンドレットを解説します。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
本連載では、Windows PowerShellの基本的なコマンドレットについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、「Azure Active Directory」(Azure AD)ユーザーにライセンスを割り当てる「Set-MgUserLicense」コマンドレットです。
「Set-MgUserLicense」は、PowerShellを利用してAzure ADユーザーにライセンスを割り当てるためのコマンドレットです。自社で購入したライセンスを各Azure ADユーザーに割り当てたり、購入したライセンスの中から一部のライセンスだけを割り当てたりすることができます。
なお、Set-MgUserLicenseコマンドレットは、本連載第45回で解説した「Connect-MgGraph」コマンドレットで「Connect-MgGraph -Scopes "User.ReadWrite.All"」を実行して、Azure ADへの接続とアクセス許可を与えておくことが前提条件になります。
オプション | 意味 |
---|---|
-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 @()
上記コマンドレット実行例では、Set-MgUserLicenseコマンドレットに続けて、-UserIdオプションでユーザーを指定しています。その後、-AddLicensesオプションに続けて「@{SkuId="xxx"}」と記述して、割り当てるライセンスを指定しています。
なお、「@」で始まるヒア文字列の部分には、「Get-MgSubscribedSku |fl」コマンドレットで事前に調べたSKU IDを指定しています。その後、-RemoveLicensesオプションに続けて「@()」と記述することで、削除するライセンスがないことを確認しています。ちなみに、削除するライセンスがない場合でも、-RemoveLicensesオプションは必ず指定しなければならないことに注意してください。
Get-MgSubscribedSku |fl
上記コマンドレット実行例では、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")
上記コマンドレット実行例では、-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 @()
上記コマンドレット実行例では、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.