【Office365】PowerShellでアカウントが利用できるサービスを一括設定

Office365
スポンサーリンク

作成済みのOffice365ユーザアカウントに対して、一部のサービスを使用不可にしたい場合の一括設定方法です。
年度始まりや毎月の新規ユーザに対してミスなく同一の設定を割り当てることができます。

スポンサーリンク

CSVファイルを準備

準備するファイルが2つあります。

・サービスを設定するユーザアカウントの一覧
・無効にするサービスの一覧

まずはサービスを設定するユーザアカウントの一覧をCSV形式で準備します。

UserPrincipalName
user1@example.com
user2@example.com
user3@example.com

CSVファイルはUTF-8形式で保存してください。
※Excelで作成して、保存する時に「CSV UTF-8(コンマ区切り)(*.csv)」を選択

続いて、無効にするサービスの一覧をtxt形式で作成します。
※ヘッダーは不要です

TEAMS1
SWAY
BPOS_S_TODO_1

新規でユーザを作成するとライセンスに紐づく全てのサービスが「有効」になっているため、不要なサービスを「無効」にします。
注意して欲しいのは無効にするサービスの一覧であって、有効にするサービスの一覧ではありません。

ライセンスに紐づくサービスの一覧はこちらのコマンドで取得できます。
下記構文の「xxxx:ENTERPRISEPACK」を環境に合わせて書き換えてください。

(Get-MsolAccountSku | where {$_.AccountSkuId -eq "xxxx:ENTERPRISEPACK"}).ServiceStatus

ここで問題なのはここで表示されたサービス名が管理画面上のどのサービスなの?ってことです。
ちょっと分かりづらいものもあります。

1ユーザだけ管理画面でサービスの設定をして、その情報をPowershellで出力してみる
(Get-MsolUser -UserPrincipalName "template@exmple.com").Licenses.ServiceStatus

ProvisioningStatusが「Disabled」のServicePlanをリスト化してtxt形式で保存します。

PowerShellファイルの作成

次の条件でPowerShellのファイルを作成します。

・作成するPowerShellファイル「C:\temp\ChangeServicePlans.ps1」
・サービスを無効にするユーザの一覧「C:\temp\UserList.csv」
・無効にするサービスの一覧「C:\temp\DisabledServiceList.txt」

下記構文の「xxxx:ENTERPRISEPACK」を環境に合わせて書き換えてください。

$UserFile = "C:\temp\UserList.csv"
$ServicePlans = Get-Content -Path "C:\temp\DisabledServiceList.txt"
$UserLists = Import-Csv -Path $UserFile
$License = "xxxx:ENTERPRISEPACK"
foreach($User in $UserLists){
    $Licenseoptions = New-MsolLicenseOptions -AccountSkuId $License -DisabledPlans $ServicePlans
    Set-MsolUserLicense -UserPrincipalName $User.UserPrincipalName -LicenseOptions $Licenseoptions
}

これをテキストエディタ(メモ帳など)で作成して、C:\tempにファイル名「ChangeServicePlans.ps1」保存します。

PowerShellの実行

作成したChangeServicePlans.ps1を実行します。

Azure Active Directory PowerShellモジュールを使用します。
PowerShellを管理者で起動してAzure ADに接続します。

接続方法についてはこちらをご覧ください。

【Office365】PowershellでMSOnline Moduleを使うためにAzure Active Directory(Azure AD)に接続する方法
MSOnline Moduleを利用する場合にはAzure ADへの接続が必要です。 MSOnline ModuleはGet-MsolUserやGet-MsolGroupなどのようにコマンドに「Msol」を含んでいます。 Pow...
PS C:\Windows\system32> cd C:\temp
PS C:\temp> .\ChangeServicePlans.ps1