今回はMicrosoft  365で管理しているユーザーのパスワードをPowershellコマンドを利用してリセット(再設定)する方法を検証しました。

全ユーザーのパスワードを一斉に変更したい時はMicrosoft  365管理センターからだと
かなり手間がかかる場合があります。
※Microsoft  365管理センターだと一括で変更出来るのが40が上限の為です。
 それ以上だと複数回に分ける必要があり、かなり面倒なのでその場合はPowershellから実行した方が
 楽なケースがあります。


<参考にしたサイト>
パスワードをリセットする

Set-MsolUserPassword

Get-AzureADUser


<検証環境>
クライアントOS:Windows 10 Pro 21H1


検証

事前準備として「MSOnline」と「AzureAD」コマンドレットをインストールします。
この辺りは以前投稿したものをご参考ください。
※詳細な手順は割愛します。

(Office365)Powershellにてユーザーを一括登録する方法を検証してみた 〜New-MsolUser〜

(Office365)セキュリティグループにユーザーを一括追加(設定)する方法を検証してみた 〜Powershell〜


実際に使用する主なコマンド
#モジュールのインストール
> Install-Module -Name MSOnline
> Install-Module -Name AzureAD

#Powershellにて接続
> Connect-MsolService
> Connect-AzureAD

#パスワードリセット(再設定) ※次回ログイン時にパスワード変更要求をする
> Set-MsolUserPassword -UserPrincipalName <対象ユーザー> -NewPassword <新しいパスワード> -ForceChangePassword $true

#CSVファイルを用意し、対象のユーザーのパスワードリセット(再設定)を一括で実行
> Import-Csv -Path <CSVファイルのフルパス> | ForEach-Object {Set-MsolUserPassword -UserPrincipalName $_.UserPrincipalName -NewPassword $_.NewPassword -ForceChangePassword $true}

#設定後、次回ログイン時にパスワード変更要求されるかの確認
> Get-AzureADUser | Select UserPrincipalName,DisplayName,@{Label="ForceChangePasswordNextLogin";Expression={($_.PasswordProfile | ForEach-Object {$_.ForceChangePasswordNextLogin})}}

#Powershellで切断
> Disconnect-AzureAD


一括変更用のCSVファイル
UserPrincipalName,NewPassword
testuser01@~,Password01
testuser02@~,Password02
testuser03@~,Password03
04-CSVファイルの中身


↓↓実際にコマンドを使用した感じはこちら↓↓
01-コマンド

02-コマンド

上記実行例を見てわかる通り「Set-MsolUserPassword」は2つのお約束があるようです。
  1. ForceChangePassword」引数を使用しなかった場合、自動的に次回ログイン時にパスワード変更要求がされる ※「-ForceChangePassword -$true」と同等
  2. NewPassword」引数を使用しなかった場合、自動でランダムなパスワードでリセットされる
また「NewPassword」を使用する場合には、複雑性を満たしていないとエラーになるなので、
注意が必要です。
  • 8文字以上16文字以下であること
  • 大文字・小文字・アルファベット以外の文字(数字や記号)が入っていること
  • 「スペース」等が入っていないこと
  • ユーザーネーム(「@」よりも前)と同じでないこと
この辺りが条件となるようです。

また、確認コマンドが長くなっていますが単純に「PasswordProfile」を指定しても上手く表示出来ない為です。
(確認コマンド模索時)
00-確認コマンド
単純なプロパティというよりはクラス?で属性を持っているようなので、必要な「ForceChangePasswordNextLogin」を取得する為にコマンドが長くなっています。


(一括変更実行時)
03-一括変更コマンド
CSVファイルを用いた一括変更も問題なく実行出来ましたっ(^o^)


今回パスワード変更に「Set-AzureADUserPassword」を使用しなかった理由としては
ユーザー指定時に「ObjectId」を指定しないといけないようだったので、「UserPrincipalName」で指定可能な「Set-MsolUserPassword」コマンドを利用しました(^_^;)
※「Set-AzureADUserPassword」コマンドでも同じことは可能かと思われます。


今回の検証もこんなところで終わりたいと思いますっ( ´ー`)フゥー...
スポンサードリンク