タグ
  ANSI (1)
  ASP.NET (10)
  Active Directory (55)
  BAT (16)
  Backup (2)
  CSharp (11)
  CentOS (4)
  C言語 (4)
  DNS (4)
  Excel (3)
  FFmpeg (1)
  Fedora (4)
  FreeBSD (6)
  IPv6 (3)
  Java (11)
  JavaScript (8)
  LAN (1)
  Link (4)
  Linux (15)
  Mac (1)
  Mail (2)
  Microsoft (3)
  NIS (1)
  Node.js (6)
  OpenIndiana (1)
  OpenLDAP (2)
  OpenSSL (1)
  OpenSolaris (4)
  PHP (2)
  Perl (2)
  Postfix (1)
  PostgreSQL (2)
  PowerShell (34)
  RFC (3)
  SQL Server (5)
  Solaris (10)
  Ubuntu (9)
  VBScript (73)
  VCpp (2)
  VMware (3)
  Visual Basic (1)
  WMI (17)
  WSF (5)
  WSH (10)
  Windows (19)
  bash (1)
  bind (1)
  iSCSI (1)
  おまけ (3)
  作成中 (8)
  慣用句 (3)
  正規表現 (6)
  運用 (8)
作成 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-2012 UPKEN IPv4