Active Directory(AD)では、セキュリティの観点からユーザーのパスワードを定期的に変更することが推奨されています。(現在では逆にパスワードを変更しない方がセキュリティ的に良いという意見もありますが。。。)
その際、「次回ログオン時にパスワード変更が必要」オプションを利用すると、ユーザーに強制的に新しいパスワードを設定させることが可能です。
これは、新規ユーザーアカウントを作成した際や、セキュリティ強化のために管理者が手動でパスワードをリセットした際に役立ちます。
この設定はActive Directory管理ツール(GUI)を使用して変更できますが、多くの管理者はPowerShellやコマンドラインを使って効率的に操作したいと考えるでしょう。
特に、多数のユーザーアカウントを一括で設定・解除したい場合、コマンドを使用することで作業の手間を大幅に削減できます。
本記事では、「次回ログオン時にパスワード変更が必要」の設定や解除をコマンドで実行する方法について詳しく解説します。
1. 「次回ログオン時にパスワード変更が必要」の概要
Active Directoryでは、ユーザーアカウントのプロパティに「User must change password at next logon」(次回ログオン時にパスワード変更が必要)というフラグを設定できます。
この設定を有効にすると、ユーザーが次にログオンした際に、強制的に新しいパスワードを設定しなければなりません。これは、以下のような場面で特に有効です。
- 新規ユーザーアカウント作成時: 初回ログイン時にユーザー自身がパスワードを設定できるようにする。
- パスワードリセット後のセキュリティ強化: 管理者がユーザーのパスワードをリセットした後、セキュリティ上の理由からユーザー自身にパスワードを変更させる。
- セキュリティポリシー適用: 企業のセキュリティ方針に基づいて、定期的にパスワードを変更させる。
この設定を行う方法はいくつかありますが、コマンドラインを使えばより効率的に管理できます。
2. コマンドで「次回ログオン時にパスワード変更が必要」を設定する方法
※注意
今回のPowerShellコマンドは「Active Directory 用 Windows PowerShell モジュール」がインストールされた環境で実行する必要があります。
Active Directoryが導入されたWindows Server上または、リモート サーバー管理ツール (RSAT)が導入されたWindows 11であればこのモジュールもインストールされています。
またActive Directoryの管理者で実行する必要があります。(対象のユーザーアカウントを操作できる権限が必要)
2.1 PowerShellでの設定
PowerShellを使って特定のユーザーに対して「次回ログオン時にパスワード変更が必要」を設定するには、以下のコマンドを使用します。
Set-ADUser -Identity <ユーザー名> -ChangePasswordAtLogon $true
例えば、taro.yamada
というユーザーに適用する場合、次のように実行します。
Set-ADUser -Identity taro.yamada -ChangePasswordAtLogon $true
このコマンドを実行すると、対象のユーザーは次回ログオン時に必ずパスワードを変更する必要があります。
2.2 複数ユーザーに適用する場合
複数のユーザーに対して一括で設定を適用する場合、CSVファイルを利用するのが便利です。例えば、以下のような users.csv
ファイルを用意します。
SamAccountName
taro.yamada
hanako.suzuki
jiro.tanaka
次に、PowerShellで以下のスクリプトを実行します。
Import-Csv users.csv | ForEach-Object { Set-ADUser -Identity $_.SamAccountName -ChangePasswordAtLogon $true }
これで、リストにあるすべてのユーザーに「次回ログオン時にパスワード変更が必要」の設定が適用されます。
3. 設定を解除する方法
もし誤って設定してしまった場合や、一時的に解除する必要がある場合は、以下のコマンドで解除できます。
ChangePasswordAtLogonで$trueを$falseに変更すると設定を解除できます。
Set-ADUser -Identity <ユーザー名> -ChangePasswordAtLogon $false
例えば、taro.yamada
の設定を解除する場合は以下のように実行します。
Set-ADUser -Identity taro.yamada -ChangePasswordAtLogon $false
また、CSVを用いて複数のユーザーに対して一括解除することも可能です。
Import-Csv users.csv | ForEach-Object { Set-ADUser -Identity $_.SamAccountName -ChangePasswordAtLogon $false }
4. 「次回ログオン時にパスワード変更が必要」の設定を確認する方法
設定が正しく適用されたかどうかを確認するには、次のPowerShellコマンドを使用します。
Get-ADUser -Identity <ユーザー名> -Properties "pwdLastSet"
例えば、taro.yamada
の状態を確認する場合は以下のように実行します。
Get-ADUser -Identity taro.yamada -Properties "pwdLastSet"
出力された pwdLastSet
の値が 0
の場合、「次回ログオン時にパスワード変更が必要」の設定が有効になっています。
5. コマンドを活用した効率的なActive Directory管理
Active Directoryを管理する際、GUIでの操作は直感的ですが、大量のアカウントを処理する場合には非効率です。
そのため、PowerShellのコマンドを活用することで、作業の効率を大幅に向上させることができます。
例えば、以下のようなシナリオでPowerShellが役立ちます。
- パスワードポリシー変更の適用: 会社のセキュリティポリシーに基づいて、全社員のパスワード変更を促す。
- 新入社員のアカウント作成時: 初回ログイン時に必ずパスワードを変更させることで、セキュリティを向上。
- パスワードリセット時のトラブル対応: ユーザーからのパスワードリセット依頼に迅速に対応し、安全に管理する。
また、スクリプトを定期的に実行することで、パスワード管理を自動化することも可能です。
コマンドプロンプトでのコマンド
ここまでPowerShellでのコマンドを説明してきましたが、
昔から使えるコマンドプロンプトで実行する方法もあります。
net userコマンドを使用した方法です。
net user /domain <ユーザーアカウント名> /LOGONPASSWORDCHG:YES
例えば、test-user というユーザーアカウントのパスワード設定と「次回ログオン時にパスワード変更が必要」の設定を同時に行うには以下のように実行します。passwordの箇所には初期パスワードを入力します。
net user /domain test-user password /LOGONPASSWORDCHG:YES
まとめ
Active Directoryの「次回ログオン時にパスワード変更が必要」設定は、ユーザーのセキュリティ強化に役立つ機能です。
PowerShellを使えば、効率的に設定・解除・確認ができ、大量のアカウントを一括で管理することも可能です。
特に、企業や組織のIT管理者にとって、この方法をマスターすることは大きなメリットとなります。
免責規定
この記事で提供される情報は、一般的なガイダンスを目的としており、すべての環境やシステムでの動作を保証するものではありません。
OSのバージョンやリリースによっては、記載されている事が実行できない、または異なる結果をもたらす可能性があります。
また、会社所有のパソコン、スマホ、タブレットなどでは、ポリシーや権限によって実行できない場合があります。
この記事の情報を使用することによって生じる問題や結果について、筆者およびサイト管理者は責任を負いません。
すべての操作は自己責任で行ってください。
最後までお読みいただきありがとうございました。
またお会いしましょう!
コメント