今回はMicrosoft 365で管理しているユーザーのパスワードをPowershellコマンドを利用してリセット(再設定)する方法を検証しました。
全ユーザーのパスワードを一斉に変更したい時はMicrosoft 365管理センターからだと
かなり手間がかかる場合があります。
※Microsoft 365管理センターだと一括で変更出来るのが40が上限の為です。
それ以上だと複数回に分ける必要があり、かなり面倒なのでその場合はPowershellから実行した方が
楽なケースがあります。
<参考にしたサイト>
パスワードをリセットする
Set-MsolUserPassword
Get-AzureADUser
<検証環境>
クライアントOS:Windows 10 Pro 21H1
この辺りは以前投稿したものをご参考ください。
※詳細な手順は割愛します。
(Office365)Powershellにてユーザーを一括登録する方法を検証してみた 〜New-MsolUser〜
(Office365)セキュリティグループにユーザーを一括追加(設定)する方法を検証してみた 〜Powershell〜
実際に使用する主なコマンド
#設定後、次回ログイン時にパスワード変更要求されるかの確認
> Get-AzureADUser | Select UserPrincipalName,DisplayName,@{Label="ForceChangePasswordNextLogin";Expression={($_.PasswordProfile | ForEach-Object {$_.ForceChangePasswordNextLogin})}}
#Powershellで切断
> Disconnect-AzureAD
一括変更用のCSVファイル
↓↓実際にコマンドを使用した感じはこちら↓↓
上記実行例を見てわかる通り「Set-MsolUserPassword」は2つのお約束があるようです。
(一括変更実行時)
CSVファイルを用いた一括変更も問題なく実行出来ましたっ(^o^)
今回パスワード変更に「Set-AzureADUserPassword」を使用しなかった理由としては
ユーザー指定時に「ObjectId」を指定しないといけないようだったので、「UserPrincipalName」で指定可能な「Set-MsolUserPassword」コマンドを利用しました(^_^;)
※「Set-AzureADUserPassword」コマンドでも同じことは可能かと思われます。
今回の検証もこんなところで終わりたいと思いますっ( ´ー`)フゥー...
全ユーザーのパスワードを一斉に変更したい時は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}
> 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
testuser01@~,Password01
testuser02@~,Password02
testuser03@~,Password03
↓↓実際にコマンドを使用した感じはこちら↓↓
上記実行例を見てわかる通り「Set-MsolUserPassword」は2つのお約束があるようです。
- 「ForceChangePassword」引数を使用しなかった場合、自動的に次回ログイン時にパスワード変更要求がされる ※「-ForceChangePassword -$true」と同等
- 「NewPassword」引数を使用しなかった場合、自動でランダムなパスワードでリセットされる
また「NewPassword」を使用する場合には、複雑性を満たしていないとエラーになるなので、
注意が必要です。
単純なプロパティというよりはクラス?で属性を持っているようなので、必要な「ForceChangePasswordNextLogin」を取得する為にコマンドが長くなっています。注意が必要です。
- 8文字以上16文字以下であること
- 大文字・小文字・アルファベット以外の文字(数字や記号)が入っていること
- 「スペース」等が入っていないこと
- ユーザーネーム(「@」よりも前)と同じでないこと
(一括変更実行時)
CSVファイルを用いた一括変更も問題なく実行出来ましたっ(^o^)
今回パスワード変更に「Set-AzureADUserPassword」を使用しなかった理由としては
ユーザー指定時に「ObjectId」を指定しないといけないようだったので、「UserPrincipalName」で指定可能な「Set-MsolUserPassword」コマンドを利用しました(^_^;)
※「Set-AzureADUserPassword」コマンドでも同じことは可能かと思われます。
今回の検証もこんなところで終わりたいと思いますっ( ´ー`)フゥー...
スポンサードリンク
コメント