自分自身が所属するActive Directory セキュリティ グループを取得する VBScript 関数のメモ。

戻り値は配列になります。

これだとプライマリ グループが拾えないが、その辺はMSの KB321360 ネイティブな ADSI コンポーネントを使用してプライマリ グループを取得する方法 あたりでできそうなので後で実装する予定。

あと、多分これでは外部フォレスト (フォレスト信頼済み) のセキュリティ グループは拾えないと思うので、そこをどうするかが課題。だれか教えてください。(´・ω・`)

2010/7/26 追記

5か月越しの追記もどうかと思いますが、信頼済みの外部フォレストのセキュリティ グループは普通に拾えました。

Function GetSecGroupName()
 Dim oADSI, oUser, oGroup
 Dim aGroups, aGroupNames
 Dim sGroup

 Set oADSI = CreateObject("ADSystemInfo")
 Set oUser = GetObject("LDAP://" & oADSI.UserName)

 Select Case TypeName(oUser.MemberOf)
   Case "Variant()"
     aGroups = oUser.MemberOf
   Case "String"
     aGroups = Array(oUser.MemberOf)
   Case Else
     aGroups = Array(Empty)
 End Select

 ReDim aGroupNames(Ubound(aGroups))
 i = 0

 For Each sGroup In aGroups
   If Len(sGroup) > 0 Then
     Set oGroup = GetObject("LDAP://" & sGroup)
     aGroupNames(i) = UCase(oGroup.CN)
   End If
   i = i + 1
 Next

 GetSecGroupName = aGroupNames

 Set oADSI = Nothing
 Set oUser = Nothing
 Set oGroup = Nothing
End Function

関連記事: