none
net user コマンドでパスワード変更時のポリシー(パスワード履歴の記録)が適用されていない RRS feed

  • 質問

  • タイトルにある通りなのですが、Windows10でローカルセキュリティーポリシーからパスワードのポリシーを設定し、パスワードポリシーの確認をしていたのですが、net user コマンド(net user [ユーザー名] [Password] )でパスワードを変更すると、パスワードポリシーの「パスワードの履歴を記録する」が適用されていないようで、何度も同じパスワードを設定できてしまいます。

    ユーザー数が多いので、効率上CUIでパスワード変更を行いたいのですが、この原因と対策をご教示いただけないでしょうか。


    • 編集済み atu120 2019年8月8日 13:02
    2019年8月8日 12:56

回答

  • 試してみたところ、GUI でパスワードを変更しようとした場合には、長さ、複雑性、履歴の 3 つがチェックされますが、「NET USER ユーザー名 *」でパスワードを変更する場合、パスワードの長さ、パスワードの複雑性はチェックが入っているようですが、確かにパスワードの履歴は無視されますね。

    「パスワードの変更禁止期間」ポリシーの説明に”[パスワードの履歴を記録する] を有効にする場合は、パスワードの変更禁止期間を 1 以上に設定してください。”と書いていますが、この設定が 0 であるか 1 であるかによって、上記の挙動(GUI も CUI も)が変化することはありませんでした。

    NET USERコマンドによるパスワードの変更は、ユーザーによるパスワード変更ではなく、管理者によるパスワード設定って感じなのでではないでしょうか?(コマンドプロンプトを管理者として開く必要がありますし)

    PowerShell を使ってパスワードを設定する場合も似たようなことがあるようです。以下が参考になるかもしれません。

    【PowerShell】パスワード変更時にローカルセキュリティポリシーが反映されない
    https://social.technet.microsoft.com/Forums/ja-JP/78fd6286-2d6b-4b32-9969-4f08bd325e34/12304powershell12305124971247312527125401248922793263562617812395


    2019年8月9日 3:06
  • チャブーンです。

    この件ですが、すでにYamauchiさんが答えていらっしゃいますが、質問者さんの希望通りの動作というのは、直接的にはムリかと思います。パスワード変更には「SetPassword」と「ChangePassword」という2つのメソッドがあり、SetPasswordでは履歴や変更禁止期間の設定は無視されます。net userでのパスワード設定はSetPasswordにあたるため、仕様は変えられないのではないでしょうか。したに関連する過去ログがあるので、ご覧になってみてください。

    https://social.technet.microsoft.com/Forums/windows/ja-JP/e69c4371-89b5-4442-a3aa-f65f75a67dfd/

    どうしてもおっしゃる動作をさせたいというなら、ChangePasswordメソッドを使ってパスワード変更をすれば、技術的には叶うと思いますが、「変更以前の(現)パスワード」を管理者が知っている必要があるので、現時的ではないと思います。以下の過去ログのスクリプトの「 $objUser.SetPassword(<実態は新パスワード文字列>)」を「 $objUser.ChangePassword(<現パスワード文字列>, <新パスワード文字列>)」に変えてもらうことで、実現可能かとは思います。このスクリプトはcsvファイルを読み込む内容になっているので、ご自身で読み替えていただかないと、すぐには直せないと思います。

    https://social.technet.microsoft.com/Forums/ja-JP/e2c433b0-20f4-4257-9a5e-cda5fffa6eb8/

    簡単なスクリプトということなら、したのページの「Change the Password for a User」が参考になると思います。

    https://www.activexperts.com/admin/vbscript-collection/activedirectory/user/passwords/

    追記:同じ質問をしている方がいらっしゃるようなので、したのページを参考にしてください。

    https://teratail.com/questions/140159

    フォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。



    2019年8月9日 5:39

すべての返信

  • 試してみたところ、GUI でパスワードを変更しようとした場合には、長さ、複雑性、履歴の 3 つがチェックされますが、「NET USER ユーザー名 *」でパスワードを変更する場合、パスワードの長さ、パスワードの複雑性はチェックが入っているようですが、確かにパスワードの履歴は無視されますね。

    「パスワードの変更禁止期間」ポリシーの説明に”[パスワードの履歴を記録する] を有効にする場合は、パスワードの変更禁止期間を 1 以上に設定してください。”と書いていますが、この設定が 0 であるか 1 であるかによって、上記の挙動(GUI も CUI も)が変化することはありませんでした。

    NET USERコマンドによるパスワードの変更は、ユーザーによるパスワード変更ではなく、管理者によるパスワード設定って感じなのでではないでしょうか?(コマンドプロンプトを管理者として開く必要がありますし)

    PowerShell を使ってパスワードを設定する場合も似たようなことがあるようです。以下が参考になるかもしれません。

    【PowerShell】パスワード変更時にローカルセキュリティポリシーが反映されない
    https://social.technet.microsoft.com/Forums/ja-JP/78fd6286-2d6b-4b32-9969-4f08bd325e34/12304powershell12305124971247312527125401248922793263562617812395


    2019年8月9日 3:06
  • チャブーンです。

    この件ですが、すでにYamauchiさんが答えていらっしゃいますが、質問者さんの希望通りの動作というのは、直接的にはムリかと思います。パスワード変更には「SetPassword」と「ChangePassword」という2つのメソッドがあり、SetPasswordでは履歴や変更禁止期間の設定は無視されます。net userでのパスワード設定はSetPasswordにあたるため、仕様は変えられないのではないでしょうか。したに関連する過去ログがあるので、ご覧になってみてください。

    https://social.technet.microsoft.com/Forums/windows/ja-JP/e69c4371-89b5-4442-a3aa-f65f75a67dfd/

    どうしてもおっしゃる動作をさせたいというなら、ChangePasswordメソッドを使ってパスワード変更をすれば、技術的には叶うと思いますが、「変更以前の(現)パスワード」を管理者が知っている必要があるので、現時的ではないと思います。以下の過去ログのスクリプトの「 $objUser.SetPassword(<実態は新パスワード文字列>)」を「 $objUser.ChangePassword(<現パスワード文字列>, <新パスワード文字列>)」に変えてもらうことで、実現可能かとは思います。このスクリプトはcsvファイルを読み込む内容になっているので、ご自身で読み替えていただかないと、すぐには直せないと思います。

    https://social.technet.microsoft.com/Forums/ja-JP/e2c433b0-20f4-4257-9a5e-cda5fffa6eb8/

    簡単なスクリプトということなら、したのページの「Change the Password for a User」が参考になると思います。

    https://www.activexperts.com/admin/vbscript-collection/activedirectory/user/passwords/

    追記:同じ質問をしている方がいらっしゃるようなので、したのページを参考にしてください。

    https://teratail.com/questions/140159

    フォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。



    2019年8月9日 5:39
  • Yamauchi Kazuo様、チャブーン様

    ご回答ありがとうございます。

    net userコマンドでは仕様上できないようなので、ChangePasswordメソッドを使ってのパスワード変更を検討してみたいと思います。
    2019年8月9日 8:59