Azure ADのPowerShell(v1)でMicrosoft365を操作(その3:ユーザの一括登録)

投稿者: | 2020年5月1日

powershell(v1)でMicrosoft365の操作シリーズです。
Microsoft365(office365) へのユーザ登録は通常はブラウザから管理ツールを使って行います。ユーザ登録やライセンスの許可などの場合は、多くのユーザアカウントで同じ作業の繰り返しとなります。

オンプレミスのActive Directoryがあれば、AAD(Azure AD Connect)の同期を使えば一気にMicrosoft365アカウントの作成ができますが、手動で行うとなると大変な作業です。そこで、PowerShellでcsvファイルを使いユーザの一括登録や設定を行います。

特に「Microsoft Teamsを導入しよう。でも、AD同期はまだ」といった場合のユーザ登録に最適です。

今までのシリーズはこちらから。
その1:Microsoft365に接続
その2:コマンド集
その3:ユーザの一括登録

ユーザ作成の流れ

excelで作ったcsvファイルを使ってMicrosoft365にユーザを一括登録する流れは以下になります。

①Microsoft365へ接続しライセンスの確認
③excelでユーザ情報を作成しcsvファイル形式で保存する
③powershellを実行する。

Microsoft365へ接続しライセンスの確認

Microsoft365へ接続しライセンスの購入数と使用数を確認します。操作手順はこちらを参照ください。
なお、ライセンス状況は以下になります。
・ActiveUnits:購入したライセンス数
・ConsumedUnits:使用(消費)したライセンス数

PS> Get-MsolAccountSku

AccountSkuId                                     ActiveUnits WarningUnits ConsumedUnits
------------                                     ----------- ------------ -------------
<onmicrosoftのドメイン名>:O365_BUSINESS_PREMIUM    xxx         0            xxx
<onmicrosoftのドメイン名>:FLOW_FREE                10000       0            xxx

上記の実行結果のAccountSkuIdの値はライセンス購入方法により異なります。例えば、Microsoftから直接購入した場合はテナント名がそのままで、販売店を経由して購入した場合はreseller-accountとなります。

excelでユーザ情報を作成しcsvファイル形式で保存する

ここでは以下の情報をもとにMicrosoft365にユーザを作成するものとします。
これに基づいてexcelファイルを作成します。


・UserPrincipalName (メールアドレス ログオン名)
・LastName(姓)
・FirstName (名)
・DisplayName (表示名)
・Password(初期パスワード)
・AccountSkuId(付与するライセンス)
・日本で使う(UsageLocation、PreferredLanguage)

これをもとにcsv形式で保存します。
注意点は、文字化け防止のためcsvファイルを保存する際に文字コードをUTF-8 に指定することです。

UserPrincipalName,LastName,FirstName,DisplayName,Password,AccountSkuId,UsageLocation
ichisuz@dom.co.jp,鈴木,一郎,鈴木 一郎,P@ssword123,dom:O365_BUSINESS_PREMIUM,JP
tanhana@dom.co.jp,田中,花子,田中 花子,P@ssword123,dom:O365_BUSINESS_PREMIUM,JP

既存のActive Directoryからユーザ情報をとる

既存のActive Directoryから必要なユーザ情報を取り出すことができます。
もっとも、オンプレミスのActive Directoryがあるならば、AAD(Azure AD Connect)の同期を使えば一気にMicrosoft365アカウントの作成ができますが、同期ができない場合は以下のコマンドで取得することができます。
なお、例ではドメインが「dom.local」となっています。また、作成するcsvファイルは 「C:\temp\ADUserList.csv」となっています。

PS> #ドメイン設定
PS> $dom = "DC=dom,DC=local"

PS> Get-ADUser -Filter * -SearchBase $dom -Property mail | 
      select name, mail, UserPrincipalName, SurName, GivenName, DisplayName | 
      Export-csv C:\temp\ADUserList.csv -encoding Default

作成したcsvの内容をMicrosoft365ように置き換える際には以下のように変更します。

項目 users_add.csv ADUserList.csv
メールアドレス ログオン名 UserPrincipalName mail
LastName SurName
FirstName GivenName
表示名 DisplayName DisplayName

powershellでMicrosoft365にユーザ作成する

作成したcsvファイルをもとにMicrosoft365にユーザ作成します。
ここでは作成したcvsファイル名は users_add.csv とします。
また、以下の条件を付けたしてあります。


・ユーザへは「最初のログオン時にパスワード変更を要求」(ForceChangePassword)
・Microsoft365のライセンスを付与(LicenseAssignment)
・日本で使う(UsageLocation、PreferredLanguage)

#ユーザ登録 & ライセンス有効
PS> Import-Csv -Path ".\users_add.csv" | 
      ForEach-Object {New-MsolUser `
        -UserPrincipalName $_.UserPrincipalName `
        -DisplayName $_.DisplayName `
        -FirstName $_.FirstName `
        -LastName $_.LastName `
        -Password $_.Password `
        -ForceChangePassword $True `
        -LicenseAssignment $_.AccountSkuId `
        -UsageLocation $._UsageLocation `
     }

Password    UserPrincipalName      DisplayName isLicensed
--------    -----------------      -----------   ----------
P@ssword123 ichisuz@dom.co.jp      鈴木 一郎     True
P@ssword123 tanhana@dom.co.jp      田中 花子     True

ユーザ作成だけしてライセンスは付与しない

ユーザ作成だけしてライセンスは付与しない場合は、csvファイルはそのままでコマンドを変えます。
コマンドから「-LicenseAssignment $_.AccountSkuId」を抜くことでユーザ作成のみとなります。

PS> #ユーザ登録 & ライセンス無効
PS> Import-Csv -Path ".\users_add.csv" | 
      ForEach-Object {New-MsolUser `
        -UserPrincipalName $_.UserPrincipalName `
        -DisplayName $_.DisplayName `
        -FirstName $_.FirstName `
        -LastName $_.LastName `
        -Password $_.Password `
        -ForceChangePassword $True `
        -UsageLocation $._UsageLocation `
      } 

Password    UserPrincipalName      DisplayName  isLicensed
--------    -----------------      -----------  ----------
P@ssword123 ichisuz@dom.co.jp      鈴木 一郎     False
P@ssword123 tanhana@dom.co.jp      田中 花子     False

あとから、ライセンスを付与する場合は、csvファイルはそのままで以下のコマンドで行います。

PS> Import-Csv  -Path ".\users_add.csv" | 
      ForEach-Object {Set-MsolUserLicense `
        -UserPrincipalName $_.UserPrincipalName `
        -AddLicenses $_.AccountSkuId `
 }

ユーザパスワードの無期限化

最近のMicrosoft365 はユーザ認証にパスワードよりも生体認証を推奨しているようで、パスワードを無期限化することを進めています。 その是非は置いといて、ユーザパスワードを無期限化するのは以下になります。

PS>#パスワード無期限ユーザの確認
PS> Get-MsolUser -All | Select-Object UserprincipalName,PasswordNeverExpires

PS> #特定のユーザに設定
PS> Set-MsolUser -UserPrincipalName "<ユーザー名>" -PasswordNeverExpires $true

PS> #全ユーザに設定
PS> Get-MsolUser | Set-MsolUser -PasswordNeverExpires $true

確認

ユーザが作成できたかは以下のコマンドで確認できます。

PS> #ユーザ一覧
PS> Get-MsolUser

PS> #ライセンスのないユーザ一覧
PS> Get-MsolUser -UnlicensedUsersOnly

PS> #特定のユーザ
PS> Get-MsolUser -UserPrincipalName <ユーザ名>

PS> #名前とライセンス状況
PS>  Get-MsolUser | Select DisplayName,isLicensed

PS>#ゲストユーザ
Get-MsolUser | Where-Object {$_.usertype -eq “Guest”}

PS>#j自社内ユーザ
Get-MsolUser | Where-Object {$_.usertype -eq “Member”}

なお、Microsoft管理センターでも確認できます。

次の操作

次回は、「Azure ADのPowerShell(v1)でMicrosoft365を操作(その4:グループにユーザ一括登録)」になります

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です