http://blog.so-net.ne.jp/nakagami/2005-05-23
VBSでテキスト化できそうです。
----
下記のスクリプトを保存して、コマンドラインで
CSCript hoge.vbs > hoge.txt
と、すれば、hoge.txtにユーザと所属するグループの組み合わせがすべて出力されます。
----
スクリプト実行にあたって、ディレクトリ(CN=Users,CN=Builtin、それぞれのOUなど)にアクセスする資格が必要です。
グループのネストには対応していません。
----
以下スクリプト
const dm = "office.domain.co.jp" ' ドメイン名を指定する(コンピュータ名ではない) main() Sub main Set cn = CreateObject("ADODB.Connection") Set rs = CreateObject("ADODB.Recordset") cn.Provider = "ADsDSOObject" cn.Open "Active Directory Provider" strSql = "select name,memberof from 'LDAP://" & dm &"' WHERE objectClass = 'user'" rs.Open strSql, cn Do Until rs.EOF If Not IsNull(rs("memberof")) Then For Each gp In rs("memberof").Value WScript.Echo rs("name") & "," & GetOneName(cn, gp) Next Else WScript.Echo rs("name") & ",なし" End If rs.MoveNext Loop End Sub Function GetOneName(cn, dn) Set rs = CreateObject("ADODB.Recordset") strSql = "select name from 'LDAP://" & dn & "'" rs.Open strSql, cn GetOneName = rs(0) End Function
http://blog.so-net.ne.jp/nakagami/2005-05-23
VBSでテキスト化できそうです。
----
下記のスクリプトを保存して、コマンドラインで
CSCript hoge.vbs > hoge.txt
と、すれば、hoge.txtにユーザと所属するグループの組み合わせがすべて出力されます。
----
スクリプト実行にあたって、ディレクトリ(CN=Users,CN=Builtin、それぞれのOUなど)にアクセスする資格が必要です。
グループのネストには対応していません。
----
以下スクリプト
const dm = "office.domain.co.jp" ' ドメイン名を指定する(コンピュータ名ではない) main() Sub main Set cn = CreateObject("ADODB.Connection") Set rs = CreateObject("ADODB.Recordset") cn.Provider = "ADsDSOObject" cn.Open "Active Directory Provider" strSql = "select name,memberof from 'LDAP://" & dm &"' WHERE objectClass = 'user'" rs.Open strSql, cn Do Until rs.EOF If Not IsNull(rs("memberof")) Then For Each gp In rs("memberof").Value WScript.Echo rs("name") & "," & GetOneName(cn, gp) Next Else WScript.Echo rs("name") & ",なし" End If rs.MoveNext Loop End Sub Function GetOneName(cn, dn) Set rs = CreateObject("ADODB.Recordset") strSql = "select name from 'LDAP://" & dn & "'" rs.Open strSql, cn GetOneName = rs(0) End Function
思った通りの結果が得られました。ありがとうございます。
私にはちょっと難解でした。。
思った通りの結果が得られました。ありがとうございます。