PowerShellでテスト用のAzureADユーザーを一括で作成する

はじめに

AzureADのユーザーを作成する際、AzureポータルからCSVを使えば複数のユーザーをまとめて作成する事が可能です。

が、今回のとある要件で利用するには向かなかったので、PowerShellのスクリプトを作成しました。

要件

今回の要件は以下のようなものでした。

  • 複数のユーザーを一度に作成する
  • 管理者が設定したパスワードを変えずに利用させたい(初回ログイン時のパスワード変更を表示させない)

※ なお、このようなユーザーの作り方は用途によっては適切ではありません。今回は、研修用に作成し、数時間で削除する事を想定しているため、管理者の設定したパスワードをそのまま使う形にしています

PowerShell スクリプト

このようになりました。(パスワードやUPNは架空のものに変更しています)

### 初期パスワードを変更しないでもすむユーザーを複数作成する

## 変数の設定

#ユーザー数
$UserCount = 3

#パスワードのベース
$PasswordBaseStrings =  "Password"

#UPNのベース
$UpnBase = "@example.com"

#ユーザー名のベース
$UserNameBase = "Test"

#AzureADのテナントID
$TenantId = "xxxxx-xxxxx-xxxxx-xxxxx"

## スクリプトの実行

Import-Module -Name AzureAD
Connect-AzureAD -TenantId $TenantId

for($i=1; $i -le $usercount; $i++){
    # パスワードポリシーの設定
    $PasswordProfile = New-Object -TypeName Microsoft.Open.AzureAD.Model.PasswordProfile
    $PasswordStrings = $PasswordBaseStrings + $i.ToString("00")
    $PasswordProfile.Password = $PasswordStrings
    $PasswordProfile.ForceChangePasswordNextLogin = $false
    # ユーザーの作成
    $UserName = $usernamebase + $i.ToString("00")
    $Upn = $UserName + $UpnBase
    New-AzureADUser -AccountEnabled $true -DisplayName $UserName -UserPrincipalName $Upn -PasswordProfile $PasswordProfile -MailNickName $UserName
}

CSVからユーザーリストを読み込んでも良かったのですが、今回は連番で簡単に作ってみました。これで、User01, User02,User03...と任意の数のユーザーを作成出来ます。

おわりに

最初はCSVでユーザーを作ってからForceChangePasswordNextLoginの値を変えようと思ったのですが、そこまでやるならユーザー作成自体もPowerShellで実行した方が楽だと気づきました。

繰り返しになりますが、ForceChangePasswordNextLoginは本番運用や、テストでも要件によってはオフにすべきではないケースがあります。今回はあくまで使い捨てのユーザーでの設定になりますので、ご利用になる際は十分ご注意ください。

投稿者プロフィール
舟越 匠

舟越 匠

人材戦略部に所属。社内向けの技術研修をメインにしつつ、JBS Tech BlogやMS認定資格取得の推進役もやっています。資格としてはAzure Solutions Architect Expertを所持。Power AutomateやLogic Appsで楽をするのが好きです。

執筆記事一覧