下記サイトのスクリプトを元に、Active Directory でパスワードが
期限切れのユーザー一覧を出力したいと思いました。
-----
Hey, Scripting Guy!
パスワードが無期限であるすべてのユーザーの一覧を取得する方法はありますか
http://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/aug05/hey0829.mspx
-----
下記サイトを参照にスクリプトの :=65536 の部分を :=8388608 に書き換えましたが、
結果がゼロになってしまいます。さらに下記サイトを見ると、「Windows Server 2003 ベースの
ドメインでは、LOCK_OUT および PASSWORD_EXPIRED は ms-DS-User-Account-Control-Computed
と呼ばれる新しい属性に置き換えられました。」との記述があります。
-----
UserAccountControl フラグを使用してユーザー アカウント プロパティを操作する方法
http://support.microsoft.com/kb/305144/ja
-----
そこで、下記のような修正を試みましたが、結果はゼロのままです。
(userAccountControl:1.2.840.113556.1.4.803:=65536)
↓
(msDS-User-Account-Control-Computed:1.2.840.113556.1.4.1460:=8388608)
msDS-User-Account-Control-Computed を[]で括ってみたり、
msDS → ms-DS と変更してみたりと試してみましたが結果はゼロのままでした。
LDAPクエリで、ms-DS-User-Account-Control-Computed の値で検索するには、
どのように記述すればよいでしょうか?
自己解決報告です。
結局、下記のスクリプトを参照し、最終パスワード変更日時から
一定日数が過ぎたユーザーのみ一覧出力する事にしました。
---
Hey, Scripting Guy!
サーベンス オクスリー法で必要な情報を取得する方法はありますか
http://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/aug06/hey0801.mspx
---
修正内容
If DateValue(objUser.passwordLastChanged) < Now() - 60 then
Wscript.Echo "User: " & objUser.FullName
Wscript.Echo "Account created: " & objUser.whenCreated & " GMT"
Wscript.Echo "Password last changed: " & objUser.passwordLastChanged
Wscript.Echo
End If
---
厳密には PASSWORD_EXPIRED とは別かと思いますが、
今回の私の使用目的には問題ありませんでした。
以上、ご報告まで。
報告の必要はないよ。
ツイート | ![]() |