PowerShellによるサブスクリプション一括割り当てで紹介した方法でEプランなど、複数のサブスクリプションが含まれるサブスクリプションを割り当てると、全てのサブスクリプションが割り当てられます。
今回は、一部のソフトウェアを利用させたくないようなユーザに、サブスクリプションをフィルタリングして割り当てる方法を紹介します。
まず、Get-MsolAccountSkuコマンドでサブスクリプションの一覧ならびに各サービスプランの名前を取得します。
プランK2の場合は
$SStatus = Get-MsolAccountSku | where {$_.SkuPartNumber -eq "DESKLESSWOFFPACK"}
$SStatus.ServiceStatus
ServicePlan                             ProvisioningStatus
-----------                             ------------------
SHAREPOINTWAC                           Success
SHAREPOINTDESKLESS                      Success
EXCHANGE_S_DESKLESS                     Success
プランE3の場合は
$SStatus = Get-MsolAccountSku | where {$_.SkuPartNumber -eq "ENTERPRISEPACK"}
$SStatus.ServiceStatus
ServicePlan                             ProvisioningStatus
-----------                             ------------------
OFFICESUBSCRIPTION                      Success
MCOSTANDARD                             Success
SHAREPOINTWAC                           Success
SHAREPOINTENTERPRISE                    Success
EXCHANGE_S_ENTERPRISE                   Success
が表示されます。それぞれ、
- EXCHANGE_S_DESKLESS Exchange Online プラン1
 - EXCHANGE_S_ENTERPRISE Exchange Online プラン2
 - SHAREPOINTDESKLESS SharePoint Online プラン1
 - SHAREPOINTENTERPRISE SharePoint Online プラン2
 - SHAREPOINTWAC Office WebApp
 - MCOSTANDARD Lync Online プラン2
 - OFFICESUBSCRIPTION Office Professional Plus
 
に対応しています。これを、New-MsolLicenseOptionsコマンドレットを利用してカスタムプランを作成し、それをSet-MsolUserLicenseの-LicenseOptionsオプションに渡せばOKです。
例えば、E3プランを持っているtest.onmicrosoft.comのuserという名前のユーザにLync以外のサブスクリプションを割り当てるには、
$WOLyncSStatus = New-MsolLicenseOptions -AccountSkuId test:ENTERPRISEPACK -DisabledPlans MCOSTANDARD Set-MsolUserLicense -userprincipalname user@test.onmicrosoft.com -addlicenses test:ENTERPRISEPACK -LicenseOptions $WOLyncSStatus
