こんにちは。
初めてブログを書くので読みにくかったらごめんなさい。
Office365の案件をやらせていただく中でお客様よりこんな質問をいただくことがあります。
「Office365のライセンスの付与ってコマンドでできるんですよね?」
「Office365アプリのオンオフをコマンドで操作できますか?」
確かに利用しないアプリはユーザーに勝手に使わせたくないのでオフにしたいという気持ちは分かります!
ということで、今回はPowershellを使ってアプリのオンオフを操作をする方法をご案内したいと思います。
Office365へPowershell接続するには各サービス(AzureADやExchange Online等)のモジュールを事前に接続元端末にインストールしておく必要があります!
今回はOffice365のコマンドを利用するのでMSOnlineをインストールします。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2021/9/9更新
2022/6/30でADALでのMicrosoft365接続(MSOnlineやAzureAD)の接続サポートが切れるので今から実施されるかたはこちらを参照いただいたほうが良いかもしれません
サポートが切れるというガイドはこちら
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- モジュールインストール方法
Powershellを管理者として起動して
「Install-Module MSOnline」を実行してください
インターネット接続されていればインストール許可を求められるのでYを入力します。
- PowershellでのOffice365の接続方法
Powershellのコマンドラインで以下を入力します。
$Cred = Get-Credential Connect-MsolService -Credential $Cred
ポップアップが表示されるのでOffice365の管理者ユーザーとパスワードを入力します
※ここから先は接続されている状態で実施してくださいね!
- 利用するコマンドレット
今回ライセンス内のアプリのオンオフに利用するコマンドレットは
「Set-MsolUserLicense」です。
実際に実行する場合はこんな感じで利用します。
Set-MsolUserLicense -UserPrincipalName "xxxx@xxxxxx" -AddLicenses xxxx:ENTERPRISEPREMIUM
Office365へ未ログインの新規ユーザーの場合は上記コマンドレットに「-UsageLocation "JP"」を付けてくださいね!※日本利用想定なのでJPです。違う場合は変更してくださいね
xxxx@xxxxxx:実際のユーザーのメールアドレス
xxxx:ENTERPRISEPREMIUM:テナントで保有するライセンス名
※xxxxは実際の環境を確認ください。
ライセンス名が分からないって人は
「Get-MsolAccountSku」を実行して確認してください。
これだけだと、ユーザーにライセンスを付与するのみです。
※付与のみでいいって方はここまでを実行くださいね
複数名に一括実行したいんや!!って方は最後までよんでやってください
アプリのオンオフをする場合は、以下をを実行します。
$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
すでにライセンスを適用している場合は-AddLicenses xxxx:ENTERPRISEPREMIUMは不要です!
ちなみにLicenselist.txtの中身はこんな感じ
このファイルを「C:\temp」に置いてあります。
今回はTEAMSとSWAYを無効にしました!
もう一度言います。無効にするアプリ名を指定します。注意してくださいね!
ここでこんな疑問でますよね?無効にするアプリ名わからんがな!!!
その場合は、以下のコマンドレットで確認してください。
Get-MsolAccountSku (Get-MsolAccountSku)[1].servicestatus.ServicePlan.Servicename
確認したいIDを指定します。今回はENTERPRISEPREMIUMを確認したいので
[1]を指定します。上から0番になっているのでご注意ください。
この中からオフにしたものを上記の「Licenselist.txt」に記載してください。
※依存関係があるアプリがあるので複数を指定しないとエラーになるアプリもありますよ!
ここまででアプリのオンオフが実施できました!!
ちょっとまった!このコマンドレットって1ユーザーしか変更できへんやないか~い
って思うかと思います。
せっかくなのでこのコマンドレットを複数名に実行する方法を記載します。
- おまけ!複数名にコマンドレットを実行する方法
まずはじめに、実行したい対象者をリスト化します。
1行目にUserと記載し、その下から変更したい対象者のIDを記載します。
今回はファイル名を「List.csv」
ファイル配置を「C:\temp」にしました。
ファイルができあがったたら、以下をスクリプトファイルにして実行します。
※接続コマンドレットは事前に実施してくださいね!
面倒であれば、先頭に
$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 }
今回の変更に限らず、複数名を一斉に処理したいことって多い気がします!
そんな時にはこれを使うとできちゃいます!
別のコマンドレットでもこれを実施したいって方は、
7,8行目を別のコマンドレットに変更してください。
$User.Userを指定すると、CSVに記載したユーザー名が取得できます。
結構便利なのでよかったら使ってみてくださいね!
- まとめ
はじめてのブログで記載方法にとまどいました。。。。。
読みにくかったらすみません。。。
備忘録のためにも少しずつ記載していきたいなと思います。
Twitterでも情報発信したいと思いますので、興味があったらフォローしてください!