FC2ブログ
MSLabo: MCP取得や実務用に自宅でWindowsサーバを検証・自習してます&たまに日記
自宅サーバにて、Windows 2008, MSCS, Active Directory, Exchange, Sharepoint, System Center(SCCM, SCOM, FCS), SQL Serverの自習、検証をした内容を記載していきたいと思います。
スポンサーサイト
--年--月--日 (--) --:-- | 編集
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
親グループにネストされたグループに所属するユーザを検索、一覧にするVBScript
2010年02月28日 (日) 16:36 | 編集
元ネタはこれ
List All Members of a Grouo, Including Members of Nested Groups

そのままコピペしても52行目でエラーが出て動かなかったため、修正
&結果をcsvとしたかったため、出力をカンマ区切りにしたものが以下

.vbsで保存して、「cscript ファイル名.vbs 調査したいGroup名」
で使います。グループに大量にグループがネストされていたり、何階層にもなっている場合に便利



Option Explicit

'Get all member of a group INCLUDING members from ALL NESTED groups.
'Simply call the script with the samAccountName of the group.
'If the group name contains spaces it should be ENCLOSED IN QUOTES,
'IE scriptName.vbs "DOMAIN ADMINS"

Dim objGroup


'VERIFY A GROUP NAME WAS PASSED
If wscript.arguments.count <> 1 Then
wscript.echo "NO GROUP PASSED"
wscript.echo "Usage: scriptName "
wscript.quit
End If


'BIND TO THE GORUP
Set objGroup = getGroup(wscript.Arguments(0))


'ENUMERATE THE GROUPS MEMBERS
enumMembers objGroup, ""



Function getGroup(strGroupName)
Dim objConn, objRecSet, strQueryString, objRootDSE, strQueryFrom
Const adsOpenStatic = 3


Set objRootDSE = GetObject("LDAP://RootDSE")
strQueryFrom = "LDAP://" & objRootDSE.get("defaultNamingContext")

Set objConn = wscript.CreateObject("ADODB.Connection")
objConn.Provider = "ADsDSOObject"
objConn.Open

strQueryString = "SELECT AdsPath FROM '" & strQueryFrom & "' " & _
"WHERE samAccountName = '" & strGroupName & "'"

Set objRecSet = wscript.CreateObject("ADODB.Recordset")

objRecSet.Open strQueryString, objConn, adsOpenStatic

If objRecSet.recordCount = 1 Then
Set getGroup = GetObject(objRecSet("AdsPath"))
Else
wscript.echo ucase(strGroupName) & " was not found in the domain. (" & objRootDSE.get("defaultNamingContext") & ")"
wscript.quit
End If
End Function


Sub enumMembers(byRef objGroup, strInheritedFrom)
Dim objMember

For Each objMember In objGroup.Members
If lcase(objMember.class) = "group" Then
enumMembers objMember, objMember.samAccountName
Else
If objMember.displayname <> "" Then
If strInheritedFrom = "" Then
wscript.echo objMember.displayname
Else
wscript.echo objMember.samAccountName &","& objMember.displayname & "," & _
strInheritedFrom & ")"
End If
Else
If strInheritedFrom = "" Then
wscript.echo objMember.samAccountName
Else
wscript.echo objMember.samAccountName & " (From NESTED GROUP: " & _
strInheritedFrom & ")"
End If
End If
End If

Next
End Sub

スポンサーサイト
コメント
この記事へのコメント
コメントを投稿する
URL :
コメント :
パスワード :
秘密 : 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
この記事へのトラックバック
Powered by . / Template by sukechan.
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。