シスメモ

Linux(CentOS)、Windows(サーバー/クライアント)、Yamaha RTX、その他の技術メモ

Windows Server

【VBScript】ActiveDirectoryのパスワード期限が来た時にメールで通知

投稿日:

photo credit: akeg via photopin cc

photo credit: akeg via photopin cc

ADの特定ユーザーのパスワードが有効期限まで3日に迫った場合に、特定のアドレスにアラートメールを送信したい・・という要望があったので、スクリプトをVBSで適当に作ってみました。
ADメンバーサーバー上のタスクで、1日1回実行するよう設定しています。

【参考】

Option Explicit

Dim objUser
Dim intUserAccountControl
Dim dtmValue
Dim intTimeInterval
Dim objDomain
Dim objMaxPwdAge
Dim dblMaxPwdNano
Dim dblMaxPwdSecs
Dim dblMaxPwdDays
Dim objSysInfo
Dim oMsg
Set objSysInfo = CreateObject(“ADSystemInfo”)

Const ADS_UF_DONT_EXPIRE_PASSWD = &h10000
Const E_ADS_PROPERTY_NOT_FOUND = &h8000500D
Const ONE_HUNDRED_NANOSECOND = .000000100
Const SECONDS_IN_DAY = 86400

Set objUser = GetObject(“LDAP://cn=hogehoge_user,cn=Users,dc=hogehoge,dc=local”)

‘##### パスワード有効期限有無の確認 #####
intUserAccountControl = objUser.Get(“userAccountControl”)
If intUserAccountControl And ADS_UF_DONT_EXPIRE_PASSWD Then
WScript.Quit
Else
dtmValue = objUser.PasswordLastChanged
intTimeInterval = Int(Now – dtmValue)

Set objDomain = GetObject(“LDAP://DC=hogehoge,DC=local”)
Set objMaxPwdAge = objDomain.Get(“maxPwdAge”)

‘##### パスワード有効期限確認 #####
If objMaxPwdAge.LowPart = 0 Then
WScript.Quit
Else
dblMaxPwdNano = _
Abs(objMaxPwdAge.HighPart * 2^32 + objMaxPwdAge.LowPart)
dblMaxPwdSecs = dblMaxPwdNano * ONE_HUNDRED_NANOSECOND
dblMaxPwdDays = Int(dblMaxPwdSecs / SECONDS_IN_DAY)

‘##### パスワード期限切れの確認 #####
If intTimeInterval >= dblMaxPwdDays Then
WScript.quit
ElseIf Int((dtmValue + dblMaxPwdDays) – Now) < 4 Then Set oMsg = CreateObject("CDO.Message") oMsg.From = "<送信元メールアドレス>”
oMsg.To = “<送信先メールアドレス>”
oMsg.Cc = “”
oMsg.Subject = “パスワード期限3日前です”
oMsg.TextBody = “ユーザーhogehoge_userのパスワード有効期限まであと ” & _
Int((dtmValue + dblMaxPwdDays) – Now) & ” 日です! 変更して下さい!”
oMsg.Configuration.Fields.Item _
(“http://schemas.microsoft.com/cdo/configuration/sendusing”) = 2
oMsg.Configuration.Fields.Item _
(“http://schemas.microsoft.com/cdo/configuration/smtpserver”) = _

oMsg.Configuration.Fields.Item _
(“http://schemas.microsoft.com/cdo/configuration/smtpserverport”) = 25
oMsg.Configuration.Fields.Update
oMsg.Send
Else
WScript.quit
End If
End If
End If



-Windows Server
-, ,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

リモートデスクトップでログイン時にエラー発生

photo credit: ChrisDag via photopin cc 環境:Windows Server 2003 R2 以前は普通にリモートデスクトップが利用出来ていたのですが、突然リモート …

WORKGROUP環境でHyper-Vマネージャを利用する

photo credit: 5thLuna via photopin cc ワークグループ環境の場合、クライアントPCからHyper-VマネージャーでHyper-V Serverを管理するには、ドメイ …

2008 R2のDHCPサービスでPXEを追加

photo credit: AndiH via photopin cc   NETSH NETHSH>DHCP server \\nameofserver add optiondef …

リモートからリモートデスクトップを許可する

photo credit: EL JOKER THE PYRA via photopin (license)  ■リモートからリモートデスクトップを許可する 【環境】 サーバー:Window …

Symantec System RecoveryでE7D10016エラー

photo credit: mmckeay via photopin cc ■Symantec System RecoveryでE7D10016エラー エラーE7D10016: 「\.sv2i」に属性 …