MR2オーナー吉田貴幸のブログ

MR2(SW20)オーナー吉田貴幸のブログ。仕事はITインフラエンジニア。愛車の記事とIT関連の情報を発信しています

【Windows】[VBScript] ドメインポリシー パスワードの有効期間 を取得する

 f:id:takayuki-yoshida:20190421223552p:plain

 

はじめに

ドメインポリシーで設定されている「パスワードの有効期間」を取得するサンプルスクリプトです。

なお、このパスワード有効期間を取得して、各ユーザーの最終パスワード変更日時に加算すれば、パスワード失効日時も求めることが出来ます。

 

パスワードの有効期間を取得するサンプルスクリプト

  • 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

 

 

参考記事

 

social.technet.microsoft.com

 

PowerShellの場合はこちらを参考にしてください

devblogs.microsoft.com