- - PR -
ドメイン上のユーザー一覧の取得
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2006-06-20 11:28
WindowsServer2000のActiveDirectoryで、ドメイン上のユーザーの一覧&アカウントが登録された、更新された日をなにかテキストで取得する方法はありますでしょうか?
皆様よろしくお願い致します。 |
|
投稿日時: 2006-06-20 12:22
こんにちは。
アカウントの登録日や更新日を取得する方法は分かりませんが、ユーザーの一覧は ADSI を利用するスクリプトを書けば出力できます。 TechNet スクリプト一覧 : Active Directory ユーザー アカウント http://www.microsoft.com/japan/technet/scriptcenter/scripts/ad/users/default.mspx ADSI の IADsUserインターフェース http://msdn.microsoft.com/library/en-us/adsi/adsi/iadsuser.asp |
|
投稿日時: 2006-06-20 13:15
createTimeStamp
modifyTimeStamp なんかで取得してくださいな。ADSIのプロパティから直接アクセスできないので Get("createTimeStamp")などとするか、ADO使ってください。 私は面倒なのでADO使っています どんな情報が取れるかは、ADSIのスキーマをにらめっこしてください。 以下、以前作ったものの「抜粋」です。終了処理とかオブジェクトの削除とかは省略してます。 #動くかどうかも?^^; MsgBox strADsPath & vbCrLf & "以下のユーザー一覧を取得します" Const ADS_SYSTEMFLAG_ATTR_IS_CONSTRUCTED = &h4 Const ADS_UF_DONT_EXPIRE_PASSWD = &H10000'無期限パスワードのチェック Set objConnection = CreateObject("ADODB.Connection") objConnection.Open "Provider=ADsDSOObject;" Set objCommand = CreateObject("ADODB.Command") objCommand.ActiveConnection = objConnection Set objRootDSE = GetObject("LDAP://rootDSE") strDNC = objRootDSE.Get("defaultNamingContext") strADsPath = "'LDAP://" & strDNC & "'" Set objDomain= GetObject("LDAP://" & strDNC) objDomain.Filter = Array("domain") objCommand.CommandText = "SELECT name,sn,givenName,displayName,sAMAccountName,userPrincipalName,createTimeStamp,modifyTimeStamp,lastLogon,description,distinguishedName " & _ "FROM " & strADsPath & " " & _ "WHERE objectClass = 'user'" & _ "AND objectCategory = 'person'" objCommand.Properties("Page Size") = 1000'ADの仕様で1ページの最大件数1000件 objCommand.Properties("Timeout") = 30 'Seconds objCommand.Properties("searchscope") = 2'ADS_SCOPE_SUBTREE Set objRecordSet = objCommand.Execute Wscript.Echo "Constructed Attributes: " Wscript.Echo "名前,姓,名,表示名,ログオン名(NetBIOS),ログオン名(user principal),作成時間,更新時間'以下略 objRecordSet.moveFirst While NOT objRecordSet.EOF 'DNからDC部分を削除 szDN = objRecordSet.Fields("distinguishedName") szDN = Left(szDN,Len(szDN)-nDCLength-1) '説明の取得(複数設定できるためこのような処理が必要) szDescription="" if Not isNull(objRecordSet.Fields("description").Value) then szDescription="" for each szTemp In objRecordSet.Fields("description").Value if szDescription<>"" then szDescription = szDescription & Chr(13) & Chr(10) szDescription = szDescription & szTemp next end if strAttribute = """" & objRecordSet.Fields("name") & """" strAttribute = strAttribute & ",""" & objRecordSet.Fields("sn") & """" strAttribute = strAttribute & ",""" & objRecordSet.Fields("givenName") & """" strAttribute = strAttribute & ",""" & objRecordSet.Fields("displayName") & """" strAttribute = strAttribute & ",""" & objRecordSet.Fields("sAMAccountName") & """" strAttribute = strAttribute & ",""" & objRecordSet.Fields("userPrincipalName") & """" strAttribute = strAttribute & ",""" & objRecordSet.Fields("createTimeStamp") & """" strAttribute = strAttribute & ",""" & objRecordSet.Fields("modifyTimeStamp") & """" WScript.Echo strAttribute 〜中略〜 Wscript.Echo strAttribute objRecordSet.MoveNext WEnd 〜省略〜 |
1