Office365のライセンスに含まれるアプリを1個だけ有効にする方法
こん○○は! 今年の1月に転職して新しい職場で働いています。すっかりWindowsとMicrosoft製品まみれの生活になってしまいました。 相変わらず情シスのお仕事をしているので各種ライセンスとアカウント管理をやってます。
今回はOffice365のライセンスに含まれるアプリを1個だけ有効にする方法を書きます。
Office365導入時はオンラインストレージなんて使わない!という方向でShare Pointを無効化してライセンス配布を行っていたけど、時代はゼロトラスト!とか急に方向が変わってSharePointを全ユーザ有効にしないといけないとか、そういうときに使えると思います。 全員のアプリの有効無効を全部同じ状態にする方法はググったら出てくるのですが、うちのテナントはユーザによって有効になっているアプリが違うので、Webブラウザでチェックを1個いれるのと同じことができないと困るのでPowerShellを書きました。
Webブラウザからライセンス管理をできるアカウントを持っていることを前提に書いてます。
全ユーザに○○したいならPowerShell
全ユーザが10人とか20人くらいならブラウザで設定ポチポチでいいと思うんですけど100人とかになってくるとつらいのでPowerShellでやります。 Windows PowerShellを開いて
Connect-MsolService
を実行してなんか赤い文字でエラーが出たらインストールが必要です。Windows Power Shellを右クリックして管理者として実行して
Install-Module MSOnline
を実行してモジュールをインストールしておきましょう。NuGetプロバイダーをインストールしてインポートするか?とPSGalleryを信頼するかと聞かれるので両方Yエンターではいを選びます。
あと、スクリプトを実行できるように
Set-ExecutionPolicy Unrestricted
も実行しておきます。
これでOffice365のアカウントの管理をPowerShellから行う準備ができました。
下準備
下準備1
Windows PowerShellで Connect-MsolService
を実行してサインインした状態で
Get-MsolAccountSku | Select AccountName,SKUPartNumber
を実行します。
今回ユーザに対して有効にしたいアプリがどのライセンスに含まれるかあらかじめ調べてAccountNameとSKUPartNumberをメモしておきます。
PS C:\> Get-MsolAccountSku | Select AccountName,SKUPartNumber
AccountName SkuPartNumber
----------- -------------
reseller-account VISIOCLIENT
reseller-account STREAM
reseller-account WINDOWS_STORE
reseller-account ENTERPRISEPACK
reseller-account FLOW_FREE
reseller-account CCIBOTS_PRIVPREV_VIRAL
reseller-account EXCHANGESTANDARD
reseller-account EXCHANGEARCHIVE_ADDON
下準備2
Get-MsolAccountSku | Where{$_.SKUPartNumber -eq "下準備1で調べたSKUPartNumber"} | Foreach{$_.ServiceStatus}
を実行します。例えばOffice35 E3の場合は以下のようになります。 これから有効にしたいServicePlanをメモしておきます。どれが何のアプリかはこちらのサイトが詳しかったです。
Get-MsolAccountSku | Where{$_.SKUPartNumber -eq "ENTERPRISEPACK"} | Foreach{$_.ServiceStatus}
ServicePlan ProvisioningStatus
----------- ------------------
POWER_VIRTUAL_AGENTS_O365_P2 Success
CDS_O365_P2 Success
PROJECT_O365_P2 Success
DYN365_CDS_O365_P2 Success
MICROSOFTBOOKINGS Success
KAIZALA_O365_P3 Success
MICROSOFT_SEARCH Success
WHITEBOARD_PLAN2 Success
MIP_S_CLP1 Success
MYANALYTICS_P2 Success
BPOS_S_TODO_2 Success
FORMS_PLAN_E3 Success
STREAM_O365_E3 Success
Deskless Success
FLOW_O365_P2 Success
POWERAPPS_O365_P2 Success
TEAMS1 Success
PROJECTWORKMANAGEMENT Success
SWAY Success
INTUNE_O365 Success
YAMMER_ENTERPRISE Success
RMS_S_ENTERPRISE Success
OFFICESUBSCRIPTION Success
MCOSTANDARD Success
SHAREPOINTWAC Success
SHAREPOINTENTERPRISE Success
EXCHANGE_S_ENTERPRISE Success
スクリプトを準備する
https://github.com/nyomo/wintools/blob/main/microsoft365/AddSingleServicePlan.ps1 こちらにスクリプトを置いてあるのでRawボタンを押して開いたらCTRL+Sとかでデスクトップあたりに保存します。 ファイル名の末尾が.txtとかにならないように気をつけてください。
メモ帳で開いてこの辺のreseller-account:ENTERPRISEPACK
とSTREAM_O365_E3
を下準備1と2で調べたものに書き換えます
# AccountSkuIdは Get-MsolAccountSku で調べて書き換える
$AccountSkuId = "reseller-account:ENTERPRISEPACK"
# EnabledPlanは (Get-MsolUser -UserPrincipalName メールアドレス).Licenses.ServiceStatus して出てきた一覧のServicePlanから1個選ぶ
# この例だとOffice365 E3に付属のStream for Office 365を有効にする
$EnabledPlan = "STREAM_O365_E3"
実行する
このスクリプトを実行するとテナント内でAccountSkuIdに指定されたライセンスを持っている全ユーザの指定のAppを有効にするので本当にそれでよいか考えて実行してください。
よければ、AddSingleServicePlan.ps1 をデスクトップに保存したなら PowerShellの画面で .\Desktop\AddSingleServicePlan.ps1
として実行するとマイクロソフトアカウントのサインイン画面がでて、サインインを行うと全アカウントに対しての処理が始まります。
処理中のユーザのメールアドレスが表示されるようになっています。
仕組みと解説
ここから下は読まなくて大丈夫です。 Office365のユーザやライセンスの管理を行うコマンドです
Get-MsolAccountSku
実行するとテナントで保有しているライセンスの一覧を取得できます。
Get-MsolUser
各ユーザアカウントの状態を確認することができます。このコマンドは実行しても何かの状態を変えるということはないので安心していろいろ試してみましょう。
以下のコマンドを実行すると有効なユーザを20件表示します
Get-MoslUser -EnabledFilter EnabledOnly -MaxResult 20
以下のように実行するとメールアドレスで指定したユーザの状態を確認することができます。
Get-MoslUser -UserPrincipalName メールアドレス | Format-List
また、以下のように実行するとメールアドレスで指定したユーザに割り当てたライセンスに対して何のAppが有効になっているかを確認することができます。
(Get-MsolUser -UserPrincipalName メールアドレス).Licenses.ServiceStatus
これは、ユーザ割当たっているライセンスの一覧を取得する方法です
(Get-MsolUser -UserPrincipalName メールアドレス).Licenses.AccountSkuId
Set-MsolUserLicense
ユーザのライセンス状況を変更します。
これを実行すると即、指定したユーザのライセンス状況が変わるのでいろいろ試してみるときはテストアカウントなど用意してテストアカウント相手に試してみましょう。
以下のコマンドを実行すると Get-MsolAccountSku | Select AccountName,SKUPartNumber
で調べたライセンスをアプリがすべて有効な状態で追加します。
Set-MsolUserLicense -UserPrincipalName メールアドレス -AddLicenses "AccountName:SKUPartNumber"
アプリを一部無効にしてライセンスを追加するにはライセンスオプションを指定します。ライセンスオプションは次のNew-MsolLicenseOptionsで説明します
Set-MsolUserLicense -UserPrincipalName メールアドレス -LicenseOptions ライセンスオプション
New-MsolLicenseOptions
Set-MsolUserLicenseで何のライセンスをどのアプリが無効の状態で割り当てるか、を指定します。
New-MsolLicenseOptions -AccountSkuId "AccountName" -DisabledPlans "ServicePlan"
例えばOffice365 E3のライセンスを Microsoft Formsを無効にした状態で追加するなら
$LicenseOption = New-MsolLicenseOptions -AccountSkuId "ENTERPRISEPACK" -DisabledPlans "FORMS_PLAN_E3"
Set-MsolUserLicense -UserPrincipalName メールアドレス -LicenseOptions $LicenseOption
とします。DisabledPlansをスクリプトで実行する場合複数種類指定するときには配列にしないとだめそうでした。