(1) GUI で管理者による強制パスワード変更時、あるいはアカウントオプションで、 「次回ログオン時にパスワード変更が必要」オプションを有効にする (2) ADSI でたとえば以下のような処理を行う。
'******************************************************************
'* 次回ログイン時にパスワード変更をするよう設定
'******************************************************************
Set adsUser = GetObject("WinNT://" & DOMAIN_NAME & "/" & strUserID & ",user")
'省略
adsUser.Put "PasswordExpired", CLng(1)
adsUser.SetInfo
|
set objADUser = GetObject("LDAP://" & strUserDN )
IF Err Then
'省略
Else
objADUser.Put "pwdLastSet", 0
objADUser.SetInfo
|

'On Error Resume Next
const DOMAINNAME = "example"
Set objUser = GetObject("WinNT://"& DOMAINNAME &"/foobar,user")
objUser.Put "PasswordExpired", CLng(1)
objUser.Setinfo
|
'On Error Resume Next
strDomain="DC=example,DC=local"
Const E_ADS_PROPERTY_NOT_FOUND = &h8000500D
Set objUser = GetObject("LDAP://" & ADlookup("foobar"))
objUser.Put "pwdLastSet", 0
objUser.SetInfo
Wscript.quit
Function ADlookup(ID)
Dim dtStart,objConnection,objCommand,objRecordSet
dtStart = TimeValue(Now())
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Open "Provider=ADsDSOObject;"
Set objCommand = CreateObject("ADODB.Command")
objCommand.ActiveConnection = objConnection
objCommand.CommandText = " |
'On Error Resume Next
Const E_ADS_PROPERTY_NOT_FOUND = &h8000500D
const DOMAINNAME = "example"
Set objUser = GetObject("WinNT://"& DOMAINNAME &"/foobar,user")
If objUser.Get("passwordexpired") <> 0 then
Wscript.echo "パスワードの期限が切れています"
Else
Wscript.Echo "パスワードは有効期限内です"
End if
|
On Error Resume Next
strDomain="DC=example,DC=local"
Const E_ADS_PROPERTY_NOT_FOUND = &h8000500D
Set objUser = GetObject("LDAP://" & ADlookup("foobar"))
dtmValue = objUser.PasswordLastChanged
If Err.Number = E_ADS_PROPERTY_NOT_FOUND Then
WScript.Echo "パスワードが設定されていません。"
WScript.Quit
Else
WScript.Echo "パスワードは " & _
DateValue(dtmValue) & " の " & TimeValue(dtmValue) & _
" に最後に設定されました。"
End If
Wscript.quit
Function ADlookup(ID)
'(さっきと同じ)
End Function
|
D:\>cscript //nologo show_ldap.vbs
パスワードは 2011/06/29 の 11:36:46 に最後に設定されました。
D:\>cscript //nologo show_winnt.vbs
パスワードは有効期限内です |
D:\>cscript //nologo show_ldap.vbs
パスワードが設定されていません。
※エラートラップをしないとこうなります↓
D:\>cscript //nologo show_ldap.vbs
D:\show_ldap.vbs(7, 1) (null): 0x8000500D
D:\>cscript //nologo show_winnt.vbs
パスワードの期限が切れています |
D:\>cscript //nologo show_ldap.vbs
パスワードは 2011/06/29 の 11:36:46 に最後に設定されました。
D:\>cscript //nologo show_winnt.vbs
パスワードは有効期限内です |
D:\>cscript //nologo show_ldap.vbs
パスワードが設定されていません。
D:\>cscript //nologo show_winnt.vbs
パスワードの期限が切れています
|
D:\>cscript //nologo show_ldap.vbs
パスワードが設定されていません。
D:\>cscript //nologo show_winnt.vbs
パスワードの期限が切れています |