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 | |
姓 | 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:グループにユーザ一括登録)」になります