- <事前準備> Microsoft Graph APIに接続します
- テナントに紐づくライセンス情報を確認する
- ライセンス内のサービスを確認する
- 登録ユーザーのCSV ファイルを作成する
- ライセンスの割り当てと削除を同時に行う
AzureAD / MSOnline コマンドレットは廃止されるため、Windows PowerShell を利用し、複数ユーザーのライセンスを一括で変更する方法 (ライセンスの削除と割り当てを同時に行う方法) のコマンドレットが変更されます。
Microsoft Graph APIに接続して実行する方法になりますので、以下に手順をご紹介したいと思います。
<事前準備> Microsoft Graph APIに接続します
以下の記事をもとにMicrosoft Graph PowerShell 用モジュールのインストールをお願いいたします。
- Windows PowerShell右クリックして[管理者として実行] で起動します。
- 以下のコマンドレットを実行し、管理者ユーザーのID とパスワードを入力します。
【コマンドレット】
Connect-MgGraph -Scopes "Organization.Read.All","User.ReadWrite.All"
- 以下のコマンドレットを実行し、モジュールをインポートします。
【コマンドレット】
Import-Module -Name Microsoft.Graph.Users
テナントに紐づくライセンス情報を確認する
以下のコマンドレットを実行し、契約中のライセンスの SkuId を確認します。
【コマンドレット】
Get-MgSubscribedSku | ft Id, SkuId, SkuPartNumber -Wrap
【出力例】
Id SkuId SkuPartNumber
-- ----- --------
a818a9d9-4bf7-4316-b8bb-e0f1a52ce5ea_06ebc4ee-1bb5-47dd-8120-11324bc54e06 06ebc4ee-1bb5-47dd-8120-11324bc54e06 SPE_E5
a818a9d9-4bf7-4316-b8bb-e0f1a52ce5ea_05e9a617-0261-4cee-bb44-138d3ef5d965 05e9a617-0261-4cee-bb44-138d3ef5d965 SPE_E3
説明
・ 上記実行例では、[Microsoft 365 E5] と [Microsoft 365 E3] ライセンスの SkuId を確認してます。テナントにて複数のライセンスを所有している場合には所得しているすべてのサービスプランが表示されます。
・ Graph でのライセンス付与コマンドレットでは、ライセンスを SkuId にて指定します。各ライセンスの SkuId は下記の公開情報もご参照ください。
ライセンス内のサービスを確認する
以下のコマンドレットを実行し、ライセンスに含まれるサービス プランの一覧から無効にするサービス プラン名を確認します。
【コマンドレット】
Get-MgSubscribedSku -SubscribedSkuId "<Get-MgSubscribedSku コマンドで確認した、サービス プランを確認したいライセンスの Id>" | Select-Object -ExpandProperty ServicePlans | ft ServicePlanId, ServicePlanName
【実行例】
Get-MgSubscribedSku -SubscribedSkuId "a818a9d9-4bf7-4316-b8bb-e0f1a52ce5ea_05e9a617-0261-4cee-bb44-138d3ef5d965" | Select-Object -ExpandProperty ServicePlans | ft ServicePlanId, ServicePlanName
説明
・ 上記実行例では、[Microsoft 365 E3 (SPE_E3)] に含まれるサービス プランを確認しています。
・ 出力された値をもとに、後述するコマンドレットでサービス プランの付与内容を作成します。
登録ユーザーのCSV ファイルを作成する
特定のライセンスが割り当てられているユーザーの CSV ファイルを作成します。
【コマンドレット】
$skuId = "<ライセンスの skuId>"
$path = "< CSV ファイルの出力先のパス>"
$users = Get-MgUser -All -Filter "assignedLicenses/any(s:s/skuId eq $skuId)"
$users |select @{n="ObjectId"; e={$_.Id}}, @{n="UserPrincipalName"; e={$_.UserPrincipalName}}, @{n="DisplayName"; e={$_.DisplayName}} | Export-Csv -NoTypeInformation -Encoding UTF8 -Path $path
【実行例】
$skuId = "06ebc4ee-1bb5-47dd-8120-11324bc54e06"
$path = "C:\temp\assignedUser.csv"
$users = Get-MgUser -All -Filter "assignedLicenses/any(s:s/skuId eq $skuId)"
$users |select @{n="ObjectId"; e={$_.Id}}, @{n="UserPrincipalName"; e={$_.UserPrincipalName}}, @{n="DisplayName"; e={$_.DisplayName}} | Export-Csv -NoTypeInformation -Encoding UTF8 -Path $path
説明
・ 上記実行例では [Microsoft 365 E5 (06ebc4ee-1bb5-47dd-8120-11324bc54e06)] が付与されたユーザーを、C ドライブの temp フォルダに assignedUser.csv として出力します。
・ 出力された一覧から、ライセンス内容の変更を行うユーザーのみをファイルに残し保存します。
・ Excel で編集する場合は保存する際に [CSV UTF-8 (コンマ区切り)] 形式で保存してください。
・ その他のライセンスを持つユーザーを出力する場合は、上記実行例の $skuId = "06ebc4ee-1bb5-47dd-8120-11324bc54e06" を 1. の手順で確認したライセンスの SkuId に置き換えます。
・ エラー発生時のリスク回避のため、作成する 1 つの CSV ファイルでは、1000 ユーザー以内で作成し、以下にご案内する変更のコマンドレットを複数回に分けて実行いただくことをお勧めいたします。
ライセンスの割り当てと削除を同時に行う
以下のコマンドレットを実行し、ライセンスの割り当てと削除を同時に行います。
【コマンドレット】
$License1 = New-Object -TypeName Microsoft.Graph.PowerShell.Models.MicrosoftGraphAssignedLicense -Property @{SkuId = "<割り当てるライセンスの SkuId>"; DisabledPlans = @("<無効にするサービス プランの ServicePlanId>")}
Import-Csv <csv ファイルのパス名> | ForEach-Object { Set-MgUserLicense -UserId $_.UserPrincipalName -AddLicenses @(<ライセンス オプション>) -RemoveLicenses @("削除するライセンスの SkuId") }
【実行例】
$License1 = New-Object -TypeName Microsoft.Graph.PowerShell.Models.MicrosoftGraphAssignedLicense -Property @{SkuId = "05e9a617-0261-4cee-bb44-138d3ef5d965"; DisabledPlans = @("a23b959c-7ce8-4e57-9140-b90eb88a9e97","7547a3fe-08ee-4ccb-b430-5077c5041653")}
Import-Csv C:\temp\assignedUser.csv | ForEach-Object { Set-MgUserLicense -UserId $_.UserPrincipalName -AddLicenses @($License1) -RemoveLicenses @("06ebc4ee-1bb5-47dd-8120-11324bc54e06") }
説明
・ 上記実行例では、手順 3. で作成した CSV ファイルに記載されているユーザーに対して、[Microsoft 365 E3 (SPE_E3) (05e9a617-0261-4cee-bb44-138d3ef5d965)] 内の [Sway (SWAY) (a23b959c-7ce8-4e57-9140-b90eb88a9e97)] と [Yammer Enterprise (YAMMER_ENTERPRISE) (7547a3fe-08ee-4ccb-b430-5077c5041653)] が無効になっているライセンスを付与し、[Microsoft 365 E5 (SPE_E5) (06ebc4ee-1bb5-47dd-8120-11324bc54e06)] ライセンスを削除しています。
・ DisablePlans に ServicePlanId を指定しなかった場合、すべてのサービス プランが有効になります。
・ 無効にするサービス プランが複数ある場合、DisablePlans に ServicePlanId をカンマ区切りで指定します。
・ 削除するライセンスがない場合も、-RemoveLicenses @() は残しておいてください。