SEくぼたの事件簿

インフラSEとしての活動を記録していきます

Office365のライセンス付与 アプリのオンオフをPowershellで実施する方法

こんにちは。

初めてブログを書くので読みにくかったらごめんなさい。

Office365の案件をやらせていただく中でお客様よりこんな質問をいただくことがあります。

「Office365のライセンスの付与ってコマンドでできるんですよね?」

「Office365アプリのオンオフをコマンドで操作できますか?」

確かに利用しないアプリはユーザーに勝手に使わせたくないのでオフにしたいという気持ちは分かります!

f:id:KKubo19:20200717175445p:plain

ライセンスブレード

ということで、今回はPowershellを使ってアプリのオンオフを操作をする方法をご案内したいと思います。

Office365へPowershell接続するには各サービス(AzureADやExchange Online等)のモジュールを事前に接続元端末にインストールしておく必要があります!

今回はOffice365のコマンドを利用するのでMSOnlineをインストールします。

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

2021/9/9更新

2022/6/30でADALでのMicrosoft365接続(MSOnlineやAzureAD)の接続サポートが切れるので今から実施されるかたはこちらを参照いただいたほうが良いかもしれません

kbtblog.hatenablog.com

 

サポートが切れるというガイドはこちら

Microsoft Authentication Library と Microsoft Graph への移行は完了済みでしょうか? | Japan Azure Identity Support Blog (jpazureid.github.io)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

  • モジュールインストール方法

Powershellを管理者として起動して

「Install-Module MSOnline」を実行してください

インターネット接続されていればインストール許可を求められるのでYを入力します。

f:id:KKubo19:20200717180938p:plain

 

Powershellコマンドラインで以下を入力します。

 
$Cred = Get-Credential
Connect-MsolService -Credential $Cred

f:id:KKubo19:20200717181942p:plain

ポップアップが表示されるのでOffice365の管理者ユーザーとパスワードを入力します

f:id:KKubo19:20200717182046p:plain

 ※ここから先は接続されている状態で実施してくださいね!

 

  • 利用するコマンドレット

今回ライセンス内のアプリのオンオフに利用するコマンドレットは

「Set-MsolUserLicense」です。

実際に実行する場合はこんな感じで利用します。

Set-MsolUserLicense -UserPrincipalName "xxxx@xxxxxx" -AddLicenses xxxx:ENTERPRISEPREMIUM

Office365へ未ログインの新規ユーザーの場合は上記コマンドレットに「-UsageLocation "JP"」を付けてくださいね!※日本利用想定なのでJPです。違う場合は変更してくださいね

xxxx@xxxxxx:実際のユーザーのメールアドレス

xxxx:ENTERPRISEPREMIUM:テナントで保有するライセンス名

※xxxxは実際の環境を確認ください。

ライセンス名が分からないって人は

「Get-MsolAccountSku」を実行して確認してください。

f:id:KKubo19:20200717184153p:plain

 

これだけだと、ユーザーにライセンスを付与するのみです。

※付与のみでいいって方はここまでを実行くださいね

複数名に一括実行したいんや!!って方は最後までよんでやってください

 

アプリのオンオフをする場合は、以下をを実行します。

$Plan = Get-Content -Path "C:\temp\Licenselist.txt"
$Licenseoption = New-MsolLicenseOptions -AccountSkuId xxxx:ENTERPRISEPREMIUM -DisabledPlans $Plan
Set-MsolUserLicense -UserPrincipalName xxxx@xxxxxx -LicenseOptions $Licenseoption -AddLicenses xxxx:ENTERPRISEPREMIUM

f:id:KKubo19:20200717194035p:plain

すでにライセンスを適用している場合は-AddLicenses xxxx:ENTERPRISEPREMIUMは不要です!

ちなみにLicenselist.txtの中身はこんな感じ

このファイルを「C:\temp」に置いてあります。

f:id:KKubo19:20200717194200p:plain

今回はTEAMSとSWAYを無効にしました!
もう一度言います。無効にするアプリ名を指定します。注意してくださいね!

 

ここでこんな疑問でますよね?無効にするアプリ名わからんがな!!!

その場合は、以下のコマンドレットで確認してください。

Get-MsolAccountSku
(Get-MsolAccountSku)[1].servicestatus.ServicePlan.Servicename

f:id:KKubo19:20200717194554p:plain

確認したいIDを指定します。今回はENTERPRISEPREMIUMを確認したいので

[1]を指定します。上から0番になっているのでご注意ください。

f:id:KKubo19:20200717194859p:plain

この中からオフにしたものを上記の「Licenselist.txt」に記載してください。

※依存関係があるアプリがあるので複数を指定しないとエラーになるアプリもありますよ!

ここまででアプリのオンオフが実施できました!!

 

ちょっとまった!このコマンドレットって1ユーザーしか変更できへんやないか~い

って思うかと思います。

せっかくなのでこのコマンドレットを複数名に実行する方法を記載します。

 

 

  • おまけ!複数名にコマンドレットを実行する方法

まずはじめに、実行したい対象者をリスト化します。

1行目にUserと記載し、その下から変更したい対象者のIDを記載します。

今回はファイル名を「List.csv

ファイル配置を「C:\temp」にしました。

f:id:KKubo19:20200717195631p:plain

ファイルができあがったたら、以下をスクリプトファイルにして実行します。

※接続コマンドレットは事前に実施してくださいね!

面倒であれば、先頭に

$Cred = Get-Credential
Connect-MsolService -Credential $Cred

を追加してください

$File = "C:\temp\List.csv"
$Plan = Get-Content -Path "C:\temp\Licenselist.txt"
$UserLists = Import-Csv -Path $File
$License = "xxxx:ENTERPRISEPREMIUM"
foreach($User in $UserLists){
      $Licenseoption = New-MsolLicenseOptions -AccountSkuId $License -DisabledPlans $Plan
      Set-MsolUserLicense -UserPrincipalName $User.User -LicenseOptions $Licenseoption -AddLicenses $License
}

f:id:KKubo19:20200717200351p:plain

 

今回の変更に限らず、複数名を一斉に処理したいことって多い気がします!

そんな時にはこれを使うとできちゃいます!

別のコマンドレットでもこれを実施したいって方は、

7,8行目を別のコマンドレットに変更してください。

$User.Userを指定すると、CSVに記載したユーザー名が取得できます。

結構便利なのでよかったら使ってみてくださいね!

 

  • まとめ

はじめてのブログで記載方法にとまどいました。。。。。

読みにくかったらすみません。。。

備忘録のためにも少しずつ記載していきたいなと思います。

Twitterでも情報発信したいと思いますので、興味があったらフォローしてください!