はじめに
ドメインポリシーで設定されている「パスワードの有効期間」を取得するサンプルスクリプトです。
なお、このパスワード有効期間を取得して、各ユーザーの最終パスワード変更日時に加算すれば、パスワード失効日時も求めることが出来ます。
パスワードの有効期間を取得するサンプルスクリプト
- getMaxPwdAge.vbs
Const E_ADS_PROPERTY_NOT_FOUND = &h8000500D
Const ONE_HUNDRED_NANOSECOND = .000000100
Const SECONDS_IN_DAY = 86400
Const NO_EXPIRE = 99999
strDomainName = "ドメイン名"
Set objDomain = GetObject("LDAP://" & strDomainName)
Set objMaxPwdAge = objDomain.Get("maxPwdAge")
'//パスワード有効期限が設定されていない場合、終了する
If objMaxPwdAge.LowPart = 0 Then
PasswordDaysLeft = NO_EXPIRE
Wscript.echo PasswordDaysLeft
Wscript.quit
End If
'//パスワード有効期限が設定されている場合
'//ドメインポリシーから取得したパスワード有効期間を変換する
dblMaxPwdNano = Abs(objMaxPwdAge.HighPart * 2^32 + objMaxPwdAge.LowPart)
dblMaxPwdSecs = dblMaxPwdNano * ONE_HUNDRED_NANOSECOND
dblMaxPwdDays = Int(dblMaxPwdSecs / SECONDS_IN_DAY)
'//パスワードの有効期間(日)の表示(ドメインポリシー)
Wscript.echo dblMaxPwdDays
'//ユーザーごとのパスワード有効期限(失効日時)を確認するには、下記で計算する
'//DateAdd("d", dblMaxPwdDays, objUser.PasswordLastChanged)
'//終了処理 Set objDomain = Nothing
Set objMaxPwdAge = Nothing
Wscript.quit
参考記事
PowerShellの場合はこちらを参考にしてください