作成 2010.01.05
更新 2010.01.05
ユーザー作成時刻と最終ログオン時刻とパスワード設定時刻
このサンプルでは Active Directory のユーザーアカウントを検索し、作成時刻と最終ログオン時刻、パスワード設定時刻を一覧で表示します。
Option Explicit
' CScriptで実行してください
Dim WshShell
Dim strEnvDnsDomain, arrItem, baseDN, i
Dim objConnection, objCommand, objRecordSet, strCommandText
Dim strUserName, dateCreated, objDateTime, dateLastLogon, datePassword

' DNSドメインを取得しbaseDNを設定
Set WshShell = CreateObject("WScript.Shell")
strEnvDnsDomain = WshShell.ExpandEnvironmentStrings("%USERDNSDOMAIN%")
If Left(strEnvDnsDomain, 1) = "%" Then
  WScript.Echo "操作しているPCはActive Directoryドメインに参加していないようです。" & vbNewLine & _
		"終了します。"
  WScript.Quit
End If
arrItem = Split(strEnvDnsDomain, ".")
baseDN = ""
For i = 0 to UBound(arrItem)
  If i = 0 Then
    baseDN = "DC=" & arrItem(i)
  Else
    baseDN = baseDN & ",DC=" & arrItem(i)
  End If
Next

' DCに接続
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
objCommand.ActiveConnection = objConnection
objCommand.Properties("Page Size") = 1000
strCommandText = "<LDAP://" & baseDN & ">;" & _
	"(&(objectClass=user)(!objectClass=computer));" & _
	"distinguishedName,sAMAccountName,whenCreated,lastLogon,pwdLastSet;" & _
	"subtree"
objCommand.CommandText = strCommandText
Set objRecordSet = objCommand.Execute

WScript.Echo "UserName" & vbTab & "CreateDate" & vbTab & "LastLogonDate" & vbTab & "PasswordLastSet"

Do Until objRecordset.EOF
  strUserName = objRecordset.Fields("sAMAccountName")
  dateCreated = objRecordset.Fields("whenCreated")
  objDateTime = objRecordset.Fields("lastLogon")
  dateLastLogon = GetDateTime(objDateTime)
  objDateTime = objRecordset.Fields("pwdLastSet")
  datePassword = GetDateTime(objDateTime)
  WScript.Echo strUserName & vbTab & dateCreated & vbTab & dateLastLogon & vbTab & datePassword
  objRecordset.MoveNext
Loop
objConnection.Close
Set objCommand = Nothing

Function GetDateTime(ByVal objDateTime)
  Dim deltaTime 
  If IsNull(objDateTime) Then ' 2000 Server から移行していると Null の場合がある
    GetDateTime = #1/1/1601#
    Exit Function
  End If
  If objDateTime.LowPart < 0 Then
    deltaTime = objDateTime.HighPart + 1
  Else
    deltaTime = objDateTime.HighPart
  End If
  deltaTime = deltaTime * (2^32) + objDateTime.LowPart
  deltaTime = (deltaTime / (60 * 10000000) + 540) / 1440
  GetDateTime = deltaTime + #1/1/1601#
End Function

©2004-2017 UPKEN IPv4