Office 365 のライセンス管理


こんにちは。いつも Office 365 を利用いただきまして、ありがとうございます。
今回は、Office 365 のライセンス管理について、ご紹介いたします。

 

Office 365 でユーザーにライセンスを付与するには、GUI(Office 365 管理センター)で操作する方法と、PowerShell で操作する方法があります。
少人数の作業であれば前者で問題ありませんが、ユーザーが多い場合や、スクリプトとして実行したいような場合は後者の方法が有効です。

 

よくあるお問い合わせのシナリオに沿って、ライセンス管理の PowerShell コマンドをご案内いたします。
ライセンス名やサービスプランを変更することによって応用が可能です。

 

--------------------------------------------------------------------------------------------

事前準備(必須)

--------------------------------------------------------------------------------------------
下記の作業は、どのシナリオにおいても共通です。

 

▼Office 365 に PowerShell 接続します。
下記の公開情報に従って Azure Active Directory の PowerShell モジュール(MSOnline)をインストールします。

 

Azure Active Directory の PowerShell モジュール
https://blogs.technet.microsoft.com/jpazureid/2017/12/04/aad-powershell/

Office 365 PowerShell への接続
https://docs.microsoft.com/ja-jp/office365/enterprise/powershell/connect-to-office-365-powershell

 

その後、Connect-MsolService コマンドを実行し、管理者権限で Office 365 に接続します。

 

▼Office 365 テナントに紐づくライセンスの情報を確認します。
Get-MsolAccountSku コマンドを実行し、ライセンスの AccountSkuId を確認します。

 

コマンド実行例:

AccountSkuId ActiveUnits WarningUnits ConsumedUnits
------------ ----------- ------------ -------------
contoso:STANDARDPACK 100 0 10 <<<Office 365 Enterprise E1
contoso:ENTERPRISEPACK 100 0 10 <<<Office 365 Enterprise E3
contoso:ENTERPRISEPREMIUM 100 0 10 <<<Office 365 Enterprise E5

・・・

 

▼ユーザーの UsageLocation を設定します。
ライセンスを割り当てるユーザーは、事前に UsageLocation が設定されている必要があります。設定されていない場合にはライセンス割り当てに失敗します。
そのため、はじめてライセンス割り当てを行うユーザーの場合は、事前に次のコマンドで UsageLocation を設定します。

 

下記のコマンドを実行し、特定のユーザーの UsageLocation を ”JP” に設定します。
Set-MsolUser -UserPrincipalName <対象ユーザーの UPN> -UsageLocation "JP"

 

下記のコマンドを実行し、csv ファイル(後述)に記載されたユーザーの UsageLocation を ”JP” に一括設定します。
Import-Csv <csv ファイル名> | ForEach-Object {Set-MsolUser -UserPrincipalName $_.UserPrincipalName -UsageLocation "JP"}

 

- 参考情報
UsageLocation は、ISO 3166-1 alpha-2 (A2) の 2 文字の国/地域コードを指定します。
https://www.iso.org/obp/ui/#search/code/

 

--------------------------------------------------------------------------------------------

事前準備(任意)

--------------------------------------------------------------------------------------------

 

csv ファイルを使用してライセンスの一括割当・変更を行う場合は、下記を事前準備として実施ください。

 

▼全ユーザーの UserPrincipalName 一覧を csv ファイルに出力します。
Get-MsolUser -all | Select-Object UserPrincipalName | export-csv <出力先の csv ファイル> -Encoding UTF8 -NoTypeInformation

 

▼特定ライセンスが付与されているユーザーの UserPrincipalName 一覧を csv ファイルに出力します。
Get-MsolUser | where {$_.Licenses.AccountSkuID -eq <対象ライセンスの AccountSkuId>} | Select-Object UserPrincipalName | export-csv <出力先の csv ファイル> -Encoding UTF8 -NoTypeInformation

 

コマンド実行例: ※E1 ライセンスが付与されているユーザーの一覧を c:\temp\users.csv ファイルに出力する場合
Get-MsolUser | where {$_.Licenses.AccountSkuID -eq "contoso:STANDARDPACK"} | Select-Object UserPrincipalName | Export-Csv "C:\Temp\users.csv" -encoding UTF8 -NoTypeInformation

 

csv ファイルは、下記の形式で作成されます。
ライセンス割当・変更を行う対象ユーザーが事前に分かっている場合は、手動作成でも問題ありません。
---------------------------------------------------
UserPrincipalName
testuser01@contoso.onmicrosoft.com
testuser02@contoso.onmicrosoft.com
・・・
---------------------------------------------------

 

ユーザーにライセンスを付与する際、特定のサービスプランのみ有効化する場合は、下記を事前準備として実施ください。

 

▼作業対象ライセンスに含まれるサービスプランの情報を確認します。
(Get-MsolAccountSku | where {$_.AccountSkuId -eq <確認したいライセンスの AccountSkuId>}).ServiceStatus

 

コマンド実行例: ※Office 365 Enterprise E3 の場合(サービスプランは、2018/03/28 時点の情報です)
(Get-MsolAccountSku | where {$_.AccountSkuId -eq "contoso:ENTERPRISEPACK"}).ServiceStatus

 

ServicePlan ProvisioningStatus
----------- ------------------
RMS_S_ENTERPRISE Success <<<Azure Rights Management
EXCHANGE_S_ENTERPRISE Success <<<Exchange Online (Plan 2)
FLOW_O365_P2 Success <<<Flow for Office 365 Plan 2
FORMS_PLAN_E3 Success <<<Microsoft Forms (Plan E3)
PROJECTWORKMANAGEMENT Success <<<Microsoft Planner
Deskless Success <<<Microsoft StaffHub
STREAM_O365_E3 Success <<<Microsoft Stream for O365 E3 SKU
TEAMS1 Success <<<Microsoft Teams
INTUNE_O365/th> Success <<<Mobile Device Management for Office 365
OFFICESUBSCRIPTION Success <<<Office 365 ProPlus
SHAREPOINTWAC Success <<<Office Online
POWERAPPS_O365_P2 Success <<<PowerApps for Office 365 Plan 2
SHAREPOINTENTERPRISE Success <<<SharePoint Online (Plan 2)
MCOSTANDARD Success <<<Skype for Business Online (Plan 2)
SWAY Success <<<Sway
BPOS_S_TODO_2 Success <<<To-Do (Plan 2)
YAMMER_ENTERPRISE Success <<<Yammer Enterprise

 

▼PowerShell 上で変数 disabledplans を作成し、無効とするサービス プランの情報を変数に格納します。
下記のコマンドを実行し、割り当てるライセンスのうち、無効にするサービスを指定し、変数 disabledplans に格納します。
$disabledplans = New-Object System.Collections.Generic.List[string]
$disabledplans.Add("<無効にする ServicePlan>")
$disabledplans.Add("<無効にする ServicePlan>")
・・・
$licenses = New-MsolLicenseOptions -AccountSkuId "<割り当てるライセンスの AccountSkuId>" -DisabledPlans $disabledplans

 

コマンド実行例:
※contoso:ENTERPRISEPACK ライセンスを割り当てる際に、Microsoft Teams、Sway、Yammer Enterprise を無効にする場合
$disabledplans = New-Object System.Collections.Generic.List[string]
$disabledplans.Add("TEAMS1")
$disabledplans.Add("SWAY")
$disabledplans.Add("YAMMER_ENTERPRISE")
$licenses = New-MsolLicenseOptions -AccountSkuId "contoso:ENTERPRISEPACK" -DisabledPlans $disabledplans

 

--------------------------------------------------------------------------------------------

シナリオ A. 新規ユーザーにライセンスを割り当てます。

--------------------------------------------------------------------------------------------
▼特定のユーザーに対して、全てのサービスプランを有効化してライセンスを付与します。
Set-MsolUserLicense -UserPrincipalName <UPN> -AddLicenses <付与ライセンスの AccountSkuId>

 

▼csv ファイルで指定したユーザーに対して、一括で処理するには、下記のコマンドを実行します。
Import-Csv -Path <csv ファイルのパス名> | ForEach-Object {Set-MsolUserLicense -UserPrincipalName $_.UserPrincipalName -AddLicenses <付与ライセンスの AccountSkuId>}

 

▼一部のサービスのみ有効化してライセンスを付与します。
Set-MsolUserLicense -UserPrincipalName <UPN> -AddLicenses <付与ライセンスの AccountSkuId> -LicenseOptions $licenses

 

▼csv ファイルで指定したユーザーに対して、一括で処理するには、下記のコマンドを実行します。
Import-Csv -Path <csv ファイルのパス名> | ForEach-Object {Set-MsolUserLicense -UserPrincipalName $_.UserPrincipalName -AddLicenses <付与ライセンスの AccountSkuId> -LicenseOptions $licenses}

 

--------------------------------------------------------------------------------------------

シナリオ B. ユーザーからライセンスを削除します。

--------------------------------------------------------------------------------------------
▼特定のユーザーに対して、ライセンスを削除します、
Set-MsolUserLicense -UserPrincipalName <UPN> -RemoveLicenses <削除ライセンスの AccountSkuId>

 

▼csv ファイルで指定したユーザーに対して、一括で処理するには、下記のコマンドを実行します。
Import-Csv -Path <csv ファイルのパス名> | ForEach-Object {Set-MsolUserLicense -UserPrincipalName $_.UserPrincipalName -RemoveLicenses <削除ライセンスの AccountSkuId>}

 

--------------------------------------------------------------------------------------------

シナリオ C. 同一ライセンス内で、有効にするサービスプランを変更します。

--------------------------------------------------------------------------------------------
▼特定のユーザーに対して、サービスプランを変更します。 ※AddLicenses オプションは使用しません。
Set-MsolUserLicense -UserPrincipalName <UPN> -LicenseOptions $licenses

 

▼csv ファイルで指定したユーザーに対して、一括で処理するには、下記のコマンドを実行します。
Import-Csv -Path <csv ファイルのパス名> | ForEach-Object {Set-MsolUserLicense -UserPrincipalName $_.UserPrincipalName -LicenseOptions $licenses}

 

--------------------------------------------------------------------------------------------

シナリオ D. ライセンス変更を行います。

--------------------------------------------------------------------------------------------
▼特定のユーザーに対して、ライセンス変更を行います(変更後は、全てのサービスプランを有効化)
Set-MsolUserLicense -UserPrincipalName <UPN> -RemoveLicenses <変更前の AccountSkuId> -AddLicenses <変更後の AccountSkuId>

 

▼csv ファイルで指定したユーザーに対して、一括で処理するには、下記のコマンドを実行します。
Import-Csv -Path <csv ファイルのパス名> | ForEach-Object {Set-MsolUserLicense -UserPrincipalName $_.UserPrincipalName -RemoveLicenses <変更前の AccountSkuId> -AddLicenses <変更後の AccountSkuId>}

 

▼特定のユーザーに対して、ライセンス変更を行います(変更後は、一部のサービスのみ有効化)
Set-MsolUserLicense -UserPrincipalName <UPN> -RemoveLicenses <変更前の AccountSkuId> -AddLicenses <変更後の AccountSkuId > -LicenseOptions $licenses

 

▼csv ファイルで指定したユーザーに対して、一括で処理するには、下記のコマンドを実行します。
Import-Csv -Path <csv ファイルのパス名> | ForEach-Object {Set-MsolUserLicense -UserPrincipalName $_.UserPrincipalName -RemoveLicenses <変更前の AccountSkuId> -AddLicenses <変更後の AccountSkuId > -LicenseOptions $licenses}

 

--------------------------------------------------------------------------------------------

事後確認

--------------------------------------------------------------------------------------------
▼作業対象ユーザーのライセンス付与状況を確認します。
Get-MsolUser -UserPrincipalName <UPN> | Select-Object -ExpandProperty Licenses

 

▼サービスプランまで確認するには、下記のコマンドを実行します。
Get-MsolUser -UserPrincipalName <UPN> | Select-Object -ExpandProperty Licenses | Select-Object -ExpandProperty ServiceStatus

 

ユーザーのライセンス保持状況を確認するには、[Office 365 管理センター] - [アクティブなユーザー] にて csv ファイルをエクスポートする方法も有効です。

 

--------------------------------------------------------------------------------------------

参考情報

--------------------------------------------------------------------------------------------
Office 365 PowerShell を使用してライセンスをユーザー アカウントに割り当てる
https://technet.microsoft.com/ja-jp/library/dn771770.aspx

Office 365 PowerShell を使ったサービスへのアクセスを無効にする
https://technet.microsoft.com/ja-jp/library/dn771769.aspx

Windows PowerShell コマンドでの新規ユーザー一括作成手順 (ライセンス付与、パスワード同時設定)
https://answers.microsoft.com/ja-jp/msoffice/forum/msoffice_o365admin-mso_manage/windows-powershell/b0dbbafd-ec0d-401f-9d88-b6b4fc72f6f6

 

今後も Office 365 サービスに関する有益な情報を発信してまいりますので、弊社サポート ブログをよろしくお願いいたします。


Skip to main content