' ---------------------------------------------------------------------------- ' 2004/08/27 temtecomai ' ---------------------------------------------------------------------------- ' 機能 : ドメインのグループごとに、登録されているユーザーの一覧を ' テキストファイルに出力する。 ' 備考 : 各項目を TAB 区切りのテキストで出力する。 ' 注意 : これを実行するには ADSI が必要。(NT 4.0 で実行する場合は要インストール) ' ---------------------------------------------------------------------------- '**Start Encode** Option Explicit Const mcTEXTFILEPATH = "c:\tools\users\UserMapping.txt" ' 出力ファイルのフルパス Const mcDOMAIN = "SysTeam" ' 検索するドメイン名 ' 除外するグループ一覧 Const mcHIDDENGROUPS = "Domain Admins,Domain Users,Domain Guests,MTS Trusted Impersonators,Account Operators,Administrators,Backup Operators,Guests,Print Operators,Replicator,Server Operators,MTS Impersonators,Users" '-------------------------------------------------------- '---------------------------------------------------------------- ' メインプロシージャ '---------------------------------------------------------------- Sub JobStart() Dim objDomInfo Dim objGroup Dim objUser Dim Fs Dim Ts Dim aryHiddenGroups aryHiddenGroups = Split(mcHIDDENGROUPS, ",") ' 除外リストを配列に格納 Set objDomInfo = GetObject("WinNT://" & mcDOMAIN) ' ドメインの情報を取得 objDomInfo.Filter = Array( "Group" ) ' 一覧をグループに絞る If IsObject(objDomInfo) Then Set Fs = CreateObject("Scripting.FileSystemObject") set ts = Fs.CreateTextFile(mcTEXTFILEPATH, True) ' 出力ファイルを生成 ' Ts.WriteLine("Group Name" & vbTab & "User Name" & vbTab & "Fullname" & vbTab & "Description") ' ヘッダーを出力 For Each objGroup In objDomInfo If SearchArray(objGroup.Name, aryHiddenGroups) = -1 Then ' 除外リストに入っていなければ出力 Ts.WriteLine(objGroup.Name & vbTab & objGroup.Description) objGroup.Members.Filter = Array("User") For Each objUser In objGroup.Members On Error Resume Next Ts.WriteLine(vbTab & vbTab & objUser.Name & vbTab & objUser.FullName & vbTab & objUser.Description) On Error Goto 0 Next Ts.WriteLine() End If Next Ts.Close End If Set Ts = Nothing Set Fs = Nothing Set objUser = Nothing Set objGroup = Nothing Set objDomInfo = Nothing End Sub '---------------------------------------------------------------- ' 機能 : 配列の中から文字列を検索し、ヒットした Index を返す。 ' 備考 : Index は 0 から始まる。 ' ヒットしなかった場合は -1 を返す '---------------------------------------------------------------- Function SearchArray(SearchStr, TargetArray) Dim i SearchArray = -1 For i = 0 To Ubound(TargetArray) If TargetArray(i) = SearchStr Then SearchArray = i Exit For End If Next End Function JobStart() ' メインプロシージャを実行