PowerShell Core(PowerShell 7)で Microsoft 365 のユーザーを一括登録する
以前にPowerShell で Microsoft 365 のユーザーを一括登録するで Windows 10 に標準でインストールされている PowerShell(PowerShell 5)で Microsoft 365 のユーザーを一括登録する方法を紹介しましたが、ようやく PowerShell Core(PowerShell 7)で一括登録することができるようになったので、その方法を紹介します。
準備と注意
以下の手順で一括登録するためには、PowerShell 5.1 以上を使う必要があります。Windows 10 Anniversary Update に搭載されているのが PowerShell 5.1 なので、Windows 10 をきちんと更新していれば使えるはずです。とはいえ、PowerShell 5.1 であれば、従来の MSOnline モジュールを使えばよいので、PowerShell 7(PowerShell Core)で使う人向けです。
- .NET Framework 4.7.2 以上をインストールする
- Windows PowerShell を管理者として実行し、以下のコマンドを実行する
Install-Module Microsoft.Graph
コマンドを実行- NuGet プロバイダーをインストールするようにメッセージが表示されたら、「Y」と入力し、ENTER を押す
- PSGallery からモジュールをインストールするようにメッセージが表示されたら、「Y」と入力し、Enter を押す
Untrusted repository
You are installing the modules from an untrusted repository. If you trust this repository, change its
InstallationPolicy value by running the Set-PSRepository cmdlet. Are you sure you want to install the modules from
'PSGallery'?
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "N"):
上記のようなメッセージが表示されたら、「A」を入力し、Enter を押してください。
ここまでで準備は完了です。この先は管理者でなくても問題ありません。
所有しているライセンスの確認
以下のコマンドで所有しているライセンスを確認することができます。
Connect-Graph -Scopes Organization.Read.All
Get-MgSubscribedSku | Select -Property Sku*, ConsumedUnits -ExpandProperty PrepaidUnits | Format-List
SkuPartNumber
が次の項目で入力するライセンスの種類、Enabled
が利用可能なライセンス数、ConsumedUnits
が割り当て済みのライセンス数です。
CSV の準備
以下の内容で CSV を作成します。文字コードは UTF-8、改行コードは CRLF で。後でパスを指定することになるので、わかりやすい場所に保存しておきます(C:\temp\user.csv
など)。
UserPrincipalName,MailNickname,DisplayName,FirstName,LastName,Password,UsageLocation,SkuPartNumber
t.yamada@example.com,t.yamada,山田 太郎,太郎,山田,Pass1234,JP,O365_BUSINESS_ESSENTIALS
SkuPartNumber の部分が割り当てたいライセンスの種類です。完全なリストは、ライセンスのための製品名とサービスプラン識別子で確認できますが、主なものは以下の通りです。Microsoft Defender for Business は、上記のリンクにサービスプラン識別子が記載されていないので要注意です。
- O365_BUSINESS
- Microsoft 365 Apps for Business
- O365_BUSINESS_ESSENTIALS
- Microsoft 365 Business Basic
- O365_BUSINESS_PREMIUM
- Microsoft 365 Business Standard
- SPB
- Microsoft 365 Business Premium
- TEAMS_ESSENTIALS_AAD
- Microsoft Teams Essentials(Microsoft Entra ID)
- MDE_SMB
- Microsoft Defender for Business
一括登録の実行
いよいよ一括登録の実行です。以下のコマンドを実行します。
Connect-Graph -Scopes User.ReadWrite.All, Organization.Read.All
# Microsoft 365 のログイン情報を入力
Import-Csv -Path C:\temp\user.csv | foreach {New-MgUser -AccountEnabled -UsageLocation $_.UsageLocation -UserPrincipalName $_.UserPrincipalName -DisplayName $_.DisplayName -Surname $_.LastName -GivenName $_.FirstName -MailNickname $_.MailNickname -PasswordProfile @{"Password"=$_.Password;ForceChangePasswordNextSignIn=$false}; $Sku = Get-MgSubscribedSku -All | Where SkuPartNumber -eq $_.SkuPartNumber; Set-MgUserLicense -UserId $_.UserPrincipalName -AddLicenses @{SkuId = $Sku.SkuId} -RemoveLicenses @()}
ForceChangePasswordNextSignIn=$False
を付けることで、設定したパスワードをそのまま使うことができます。ForceChangePasswordNextSignIn=$True
にすると、初回ログイン時にパスワードの設定を要求されるようになります。
New-MsolUser
コマンドレットと比較すると、-MailNickname
が必須になっているのが大きな違いです。64文字以内で設定しますが、重複しないようにメールアドレスの @ の前の部分で設定しておくのがよいでしょう。他に設定できるパラメータについては、ヘルプをご覧ください。
ライセンス割り当て後の言語設定などについては、PowerShell で Microsoft 365 のユーザーを一括登録すると同じです。PowerShell Core でユーザー作成から言語設定までできるようになるのは便利ですが、Set-MailboxRegionalConfiguration
コマンドレットを使用するためには、別途ログインが必要なのが少々面倒です。
ディスカッション
コメント一覧
まだ、コメントがありません