- - PR -
AD上のグループの白髪アイコンメンバーの取得
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2008-05-30 17:38
はじめまして。
今、AD上のセキュリティグループに登録されているメンバーの取得を行おうとしています。 方法はVBSで行いたいと思っています。 現状、1グループに300人程度であれば、全てのユーザ情報を取得してくることが可能です。 しかし、1グループに500人、1000人、1500人といる場合があり、それらのメンバーを取得しようとすると391人まで取得して処理が終了してしまいます。 AD2003の仕様で、1度に取得できる人数みたいなのがあると聞いたことがあります。 .Netでは解決する方法もあると聞いたことがあるのですが、VBSで同様の処理を行うことが可能なのかを知りたいです。 いろいろと探しては見たものの、やっていることは自分のスクリプトと変わらずでした。 一応、やっていることを記載します。 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ Const ADS_SCOPE_SUBTREE = 5 Const PSIZE = 100 i = 0 Set strDomainName = GetObject("LDAP://RootDSE") ADsPath = strDomainName.Get("defaultNamingContext") Set objConnection = CreateObject("ADODB.Connection") Set objCommand = CreateObject("ADODB.Command") objConnection.Provider = "ADsDSOObject" objConnection.Open "Active Directory Provider" Set objCommand.ActiveConnection = objConnection objCommand.Properties("Page Size") = PSIZE objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE SecGroup = inputbox("セキュリティグループ名を入力してください") objCommand.CommandText = _ "SELECT distinguishedName FROM 'LDAP://" & ADsPath & "' WHERE objectCategory='group' " & _ "AND CN='" & SecGroup & "'" Set objRecordSet = objCommand.Execute If objRecordset.RecordCount = 1 Then objRecordSet.MoveFirst Do Until objRecordSet.EOF strDN = objRecordSet.Fields("distinguishedName").Value objRecordSet.MoveNext Loop Set objGroup = GetObject("LDAP://" + strDN) objGroup.GetInfo arrMem = objGroup.GetEx("member") For Each MemberName In arrMem strMember = Split(MemberName,",") strUserName = Split(strMember(0),"=") if i = 0 Then strUsr = strUserName(1) else strUsr = strUsr + vbCrLf + strUserName(1) end if i = i + 1 Next strUsr = strUsr & vbcrlf & "計 " & i & " 名" MakeFile = SPath & SecGroup & ".txt" Set objWrite = objFS.CreateTextFile(MakeFile, objWrite.WriteLine strUsr objWrite.Close Else Msgbox "指定したグループ名が見つかりません。" End if ADはWindows 2003 Server スクリプトはWindows XP SP2 or SP3で実行しています。 |
1