Distributiongroup + members export naar CSV-bestand. Export gaat niet lekker.

Status
Niet open voor verdere reacties.

henkiebeej

Gebruiker
Lid geworden
8 jul 2011
Berichten
224
Goedemiddag,

Ik heb een vraag. Ik heb onderstaand script gevonden en aangepast.
Met onderstaand script wordt een export gemaakt van elke groep met de daar bijbehorende members binnen het domein.
Daar waar ik het domein in moet vullen geef ik het pad aan naar de OU die ik wil exporteren (OU=Distributiegroepen,OU=Groepen,OU=Locatie A,DC=DOMEIN,DC=LOCAL).
Ik weet nog niet goed hoe ik dit mooier/beter kan maken.

Ik maak er een CSV-bestand van. Zodra ik deze open of importeer binnen Excel krijg ik eerst de distributiegroepnaam te zien, gelijk daaraan vast de achternaam van de gebruiker. In een nieuwe kolom staat dan de voornaam. Dit wil ik graag goed gescheiden hebben. Éen kolom voor de distributiegroepnaam en één kolom voor de naam van de gebruiker.

Als ik er een .txt-bestand van maak zie ik het volgende: Distributiegroep Sales Broek\, Piet van den

In een CSV bestand ziet het er als volgt uit: csv export voorbeeld.jpg

Het lijkt er dus op dat de comma (,) goed zijn werk doet en de tekst naar een volgende kolom brengt maar waar de slash (\) wegkomt?? En hoe ik dit aanpas???
Heeft iemand van jullie een idee hoe ik dit netjes kan scheiden?

Code:
' ***************************************************************************** 
' * List All Groups in the Domain and 
' * List All Members of each Group 
' *  
' * Output to a text file on the user's desktop in the format: 
' * group name <tab> type <tab> member name <tab> type 
' * Prompt for text file name. 
' * Aangepast door Hendrik, november 2013 
' ***************************************************************************** 

' ***************************************************************************** 
' Variables 
' ***************************************************************************** 


Const MY_DOMAIN = "DC=DOMEIN,DC=LOCAL" 



' ***************************************************************************** 
' Start Main 
' ***************************************************************************** 


On Error Resume Next 
Const ADS_SCOPE_SUBTREE = 2 
Const ADS_GROUP_TYPE_GLOBAL_GROUP = &h2 
Const ADS_GROUP_TYPE_LOCAL_GROUP = &h4 
Const ADS_GROUP_TYPE_UNIVERSAL_GROUP = &h8 
Const ADS_GROUP_TYPE_SECURITY_ENABLED = &h80000000 
Const E_ADS_PROPERTY_NOT_FOUND = &h8000500D 
Const MYPROMPT = "Geef het exportbestand een naam (bijv. groep.txt of groep.csv):" 
Const ForReading = 1, ForWriting = 2, ForAppending = 8 
Set objFSO = CreateObject("Scripting.FileSystemObject") 
 


' ***************************************************************************** 
' Setup the output file 
' ***************************************************************************** 



If UCase( Right( WScript.FullName, 12 ) ) = "\CSCRIPT.EXE" Then 
  WScript.StdOut.Write MYPROMPT & " " 
  strMyFileName = WScript.StdIn.ReadLine 
Else 
  strMyFileName = InputBox( MYPROMPT ) 
End If 
if strMyFileName = "" then 
  wscript.quit 
end if 
Set WshShell = CreateObject("WScript.Shell") 
Set WshSysEnv = WshShell.Environment("PROCESS") 
strMyFileName = WshSysEnv("USERPROFILE") & "\Desktop\" & strMyFileName 
Set WshSysEnv = nothing 
Set WshShell = nothing 
if objFSO.FileExists(strMyFileName) then 
  'objFSO.DeleteFile(strMyFileName) 
  wscript.echo "Bestandsnaam bestaat al!" 
  wscript.quit 
end if 
 


' ***************************************************************************** 
' Get a recordset of groups in AD 
' ***************************************************************************** 



Set objMyOutput = objFSO.OpenTextFile(strMyFileName, ForWriting, True) 
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") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE  
objCommand.CommandText = _ 
    "SELECT ADsPath, Name FROM 'LDAP://" & MY_DOMAIN & "' WHERE objectCategory='group'"  
Set objRecordSet = objCommand.Execute 
objRecordSet.MoveFirst 
 


' ***************************************************************************** 
' For each Group, Get group properties 
' ***************************************************************************** 



Do Until objRecordSet.EOF 
  Set objGroup = GetObject(objRecordSet.Fields("ADsPath").Value) 
  strGroupName = objRecordSet.Fields("Name").Value 
  If objGroup.GroupType AND ADS_GROUP_TYPE_LOCAL_GROUP Then 
    strGroupDesc = "Domain local " 
  ElseIf objGroup.GroupType AND ADS_GROUP_TYPE_GLOBAL_GROUP Then 
    strGroupDesc = "Global " 
  ElseIf objGroup.GroupType AND ADS_GROUP_TYPE_UNIVERSAL_GROUP Then 
    strGroupDesc = "Universal " 
  Else 
    strGroupDesc = "Unknown " 
  End If 
  If objGroup.GroupType AND ADS_GROUP_TYPE_SECURITY_ENABLED Then 
    strGroupDesc = strGroupDesc & "Security group" 
  Else 
    strGroupDesc = strGroupDesc & "Distribution group" 
  End If 
 


' ***************************************************************************** 
' Check if there are members 
' ***************************************************************************** 



  err.clear 
  arrMemberOf = objGroup.GetEx("Member") 
  If Err.Number = E_ADS_PROPERTY_NOT_FOUND then 



' ***************************************************************************** 
' Write a line to the outputfile with group properties and no members 
' ***************************************************************************** 



    objMyOutput.WriteLine(strGroupName & "GÉÉN" & "GÉÉN") 
  Else 



' ***************************************************************************** 
' For each group member, get member properties 
' ***************************************************************************** 



    For Each strMemberOf in arrMemberOf 
      Set objMember = GetObject("LDAP://" & strMemberOf) 
      strMemberName = right (objMember.name,len(objMember.Name)-3)
 


' ***************************************************************************** 
' Write a line to the outputfile with group and member properties 
' ***************************************************************************** 



	objMyOutput.WriteLine(strGroupName & vbtab & strMemberName) 
       
    set objMember = nothing 
    Next 
  End If 
  objRecordSet.MoveNext 
  Set objGroup = nothing 
Loop 
objMyOutput.close 
wscript.echo "Klaar met exporteren!"

Alvast heel erg bedankt voor het lezen. :thumb:
 
Heb het al via Powershell opgelost. Helaas wéér geen reactie ontvangen op mijn bericht.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan