Office 365 E3 ライセンスのうち Exchange Online (Plan 2) だけをユーザーに割り当てる

Disclaimer: 本エントリの内容は2018年1月3日時点の Office 365 の仕様に基づいています。

honeotech.hatenablog.com

上記のエントリでユーザーに Office 365 のライセンスを割り当てる方法について言及したが、組織によっては「 E1 を購入したが Exchange Online しか使わせたくない」といった場合もあると思うので、そのような場合のライセンス割り当ての方法を検証してみた。

検証したこと

Office 365 Enterprise E3 ライセンスのうち Exchange Online (Plan 2) だけをユーザーに割り当てる。

はじめに

Azure AD PowerShell v1 では Set-MsolUserLicense コマンドレットによってユーザーにライセンスを割り当てることができる。 E1 や E3 といった SKU の単位でユーザーにライセンスを割り当てることが可能であるが、それらに含まれるサービスごとのライセンスを個別に割り当てることも可能である。本エントリでは、 E3 に含まれる Exchange Online (Plan 2) だけをユーザーに割り当てる方法を示す。

SKU に含まれる特定のライセンスのみを割り当てるためには、割り当て対象のライセンスではなく、除外するライセンスを明示的に列挙する必要がある。例えば、今回のケースでは E3 に含まれる Exchange Online (Plan 2) 以外のすべてのライセンスを列挙する必要がある。この制約は、 New-MsolLicenseOption コマンドレットの仕様によるものである。

E3 に含まれるライセンスは将来的に変わる可能性があるため、はじめに E3 に含まれるライセンスの一覧を Office 365 から取得し、そこから Exchange Online (Plan 2) を除いて、「除外するライセンス」の一覧を作成することとする。

ライセンス割り当ての大まかな流れは次のとおり。

  1. E3 に含まれるライセンスの一覧を取得する
  2. Exchange Online (Plan 2) を除外したライセンスのセットを定義する
  3. ライセンスを割り当てる
  4. ライセンスの割り当て状況を確認する

E3 に含まれるライセンスの一覧を取得する

Get-MsolAccountSku コマンドレットで E3 (ENTERPRISEPACK)*1 のオブジェクトを取得し、そこからライセンスの情報を抽出する。

# Connect-MsolService が完了した状態で

# E3 ライセンスの AccountSku を取得する
$e3AccountSku = Get-MsolAccountSku | where {$_.AccountSkuId -match "ENTERPRISEPACK"}
$e3AccountSku
# 
# AccountSkuId              ActiveUnits WarningUnits ConsumedUnits
# ------------              ----------- ------------ -------------
# xxxxxxxxxx:ENTERPRISEPACK 25          0            8
# 
#
# E3 ライセンスに含まれる各サービスの ServiceName を取得する
$e3ServiceName = ($e3AccountSku | Select-Object -ExpandProperty ServiceStatus | Select-Object -ExpandProperty ServicePlan).ServiceName
$e3ServiceName
# BPOS_S_TODO_2
# FORMS_PLAN_E3
# STREAM_O365_E3
# Deskless
# FLOW_O365_P2
# POWERAPPS_O365_P2
# TEAMS1
# PROJECTWORKMANAGEMENT
# SWAY
# INTUNE_O365
# YAMMER_ENTERPRISE
# RMS_S_ENTERPRISE
# OFFICESUBSCRIPTION
# MCOSTANDARD
# SHAREPOINTWAC
# SHAREPOINTENTERPRISE
# EXCHANGE_S_ENTERPRISE

ここで BPOS_S_TODO_2 (To-Do (Plan 2)) から EXCHANGE_S_ENTERPRISE (Exchange Online (Plan 2)) までの17行が、 E3 に含まれるサービス(ライセンス)を表す文字列である。

Exchange Online (Plan 2) を除外したライセンスのセットを定義する

前の手順で取得したライセンスの一覧から Exchange Online (Plan 2) を除外し、ライセンスの一覧を再生成する。

# EXCHANGE_S_ENTERPRISE を除外した ServiceName の一覧を作成する
$serviceName = $e3ServiceName | sls -Pattern "EXCHANGE" -NotMatch
$serviceName
# 
# BPOS_S_TODO_2
# FORMS_PLAN_E3
# STREAM_O365_E3
# Deskless
# FLOW_O365_P2
# POWERAPPS_O365_P2
# TEAMS1
# PROJECTWORKMANAGEMENT
# SWAY
# INTUNE_O365
# YAMMER_ENTERPRISE
# RMS_S_ENTERPRISE
# OFFICESUBSCRIPTION
# MCOSTANDARD
# SHAREPOINTWAC
# SHAREPOINTENTERPRISE
# 
# 

次に、 New-MsolLicenseOption コマンドレットで LicenseOption オブジェクトを生成する。その際、 -DisalbedPlans オプションに前述のライセンス一覧を指定する。これにより、 Exchange Online (Plan 2) 以外のライセンスが無効化された E3 の LicenseOption オブジェクトが生成される。

# LicenseOption オブジェクトを作成する
$licenseOption =  New-MsolLicenseOptions -AccountSkuId 'xxxxxxxxxx:ENTERPRISEPACK' -DisabledPlans $serviceName

ライセンスを割り当てる

Set-MsolUserLicense コマンドレットでユーザーにライセンスを割り当てる。この時、 -LicenseOption オプションで、前の手順で作成した LicenseOption オブジェクトを指定する。なお、ユーザーに E3 ライセンスを既に割り当てている場合は、 -AccountSkuId オプションは省略可能である。

# ライセンスを割り当てる
Set-MsolUserLicense -UserPrincipalName <upn> -LicenseOptions $licenseOption -AddLicenses "xxxxxxxxxx:ENTERPRISEPACK"
# 何も出力されなければ成功

ライセンスの割り当て状況を確認する

最後に、 Get-MsolUser コマンドレットでライセンスの割り当て状況を確認する。

# ライセンスの割り当て状況を確認する
Get-MsolUser -UserPrincipalName <upn> | Select-Object -ExpandProperty Licenses | Select-Object -ExpandProperty ServiceStatus
# 
# ServicePlan           ProvisioningStatus
# -----------           ------------------
# BPOS_S_TODO_2         Disabled
# FORMS_PLAN_E3         Disabled
# STREAM_O365_E3        Disabled
# Deskless              Disabled
# FLOW_O365_P2          Disabled
# POWERAPPS_O365_P2     Disabled
# TEAMS1                Disabled
# PROJECTWORKMANAGEMENT Disabled
# SWAY                  Disabled
# INTUNE_O365           PendingActivation
# YAMMER_ENTERPRISE     Disabled
# RMS_S_ENTERPRISE      Disabled
# OFFICESUBSCRIPTION    Disabled
# MCOSTANDARD           Disabled
# SHAREPOINTWAC         Disabled
# SHAREPOINTENTERPRISE  Disabled
# EXCHANGE_S_ENTERPRISE Success  # Exchange Online (Plan 2) のみが割り当てられている
# 

Exchange Online (Plan 2) のみが割り当てられていることが確認できた。

*1:E1 の場合は STANDARDPACK