• TECHcrime
  • Registratie: Februari 2008
  • Laatst online: 30-01 13:26
Ik ben bezig om een AD te vullen.
Omdat dit over ongeveer 400 gebruikers gaat dacht ik dit via Excel te doen.
Echter heb ik dit nog nooit eerder gedaan en dus ben ik me er een beetje in gaan verdiepen.

Dit is wat ik al heb:


Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open _
("C:\scripts\addusers_excel.xls")

intRow = 2

Do Until objExcel.Cells(intRow,1).Value = ""
Set objOU = GetObject("ou=Gebruikers, dc=mainbuilding, dc=deklimop, dc=locals")
Set objUser = objOU.Create _
("User", "cn=" & objExcel.Cells(intRow, 1).Value)
objUser.sAMAccountName = objExcel.Cells(intRow, 2).Value
objUser.GivenName = objExcel.Cells(intRow, 3).Value
objUser.SN = objExcel.Cells(intRow, 4).Value
objUser.Displayname = objExcel.Cells(intRow, 5).Value
objUser.SetPassword = objExcel.Cells(intRow, 6).value
objUser.AccountDisabled = FALSE
objUser.SetInfo
intRow = intRow + 1
Loop

objExcel.Quit




Hierbij bijbehorende Excel bestand.

Echter krijg ik een foutmelding op Line 8 char 5


Set objOU = GetObject("ou=Users, dc=mainbuilding, dc=deklimop, dc=locals")



Kan iemand mij hier verder mee helpen?

Alvast heel erg bedankt.

Mvg,
TECHcrime

  • LuckY
  • Registratie: December 2007
  • Niet online
Waarom verdiep je je niet in CSVDE
Deze kan gebruik maken van CSV files die excel kan exporteren :)

Tevens kan je imho beter kijken naar powershell dan VBscript, ik vond dat ik dat persoonlijk beter snapte :)

edit :

At je script, klopt het dat het locals is ? of is het local :) want de naam van je AD domain is dus:
mainbuilding.deklimop.locals

En zoek eens naar voorbeelden op internet zoals hier:
http://www.computerperfor...ript_user_spreadsheet.htm

[ Voor 40% gewijzigd door LuckY op 14-05-2010 16:51 ]


  • TECHcrime
  • Registratie: Februari 2008
  • Laatst online: 30-01 13:26
Van VBS heb ik readers enz.. van PowerShell niet..
Dus vandaar dat ik VBS neem..

edit:
De domein naam is idd mainbuilding.deklimop.locals.
Dit omdat er ook linux machines in het netwerk komen.
Mijn excel bestand is op dezelfde manier opgebouwd als die in het voorbeeld.

[ Voor 54% gewijzigd door TECHcrime op 14-05-2010 16:55 ]


  • alt-92
  • Registratie: Maart 2000
  • Niet online

alt-92

ye olde farte

Dat is echt niet je hele script als ik het zo zie.

ik heb een 864 GB floppydrive! - certified prutser - the social skills of a thermonuclear device


  • Mike2k
  • Registratie: Mei 2002
  • Laatst online: 12-12-2025

Mike2k

Zone grote vuurbal jonge! BAM!

Ik heb het ooit gedaan met een text file...zal het scriptje eens opzoeken

You definitely rate about a 9.0 on my weird-shit-o-meter
Chuck Norris doesn't dial the wrong number. You answer the wrong phone.


  • Yalopa
  • Registratie: Maart 2002
  • Niet online

Yalopa

Less is more!

LuckY schreef op vrijdag 14 mei 2010 @ 16:48:
Waarom verdiep je je niet in CSVDE
Deze kan gebruik maken van CSV files die excel kan exporteren :)

Tevens kan je imho beter kijken naar powershell dan VBscript, ik vond dat ik dat persoonlijk beter snapte :)
csvde idd, waarom zou je het wiel opnieuw uitvinden.

You don't need eyes to see, you need vision


  • LordMorgoth
  • Registratie: April 2003
  • Niet online

LordMorgoth

Valar Morghulis!

code:
1
CSVDE -d "OU=ou,DC=domein,dc=local" -f gebruikers.csv


Dit exporteert alle gebruikers uit de OU ou in het domein domein.local naar het bestand gebruikers.csv

Deze kan je zoals hierboven ookal vermeld gewoon inlezen in Excel.

Valar Morghulis! All men must die -- Jaqen H'ghar


  • BDannyV
  • Registratie: September 2004
  • Niet online
Powershell + de Quest AD cmdlets zullen je het leven veel makkelijker maken.
400 nieuwe gebruikers is 2 regels code als je inderdaad vanuit een tekstfile werkt.
Ik gebruik niets anders meer.

  • eagle00789
  • Registratie: November 2005
  • Laatst online: 28-01 14:09

eagle00789

Est. November 2005

Ik ben op het werk de cursus MCITP aan het volgen en heb van de leraar een excelsheet gekregen die je het leven makkelijk kan maken. ik zal deze morgen hier posten...

  • Ferruginous Hwk
  • Registratie: September 2003
  • Niet online
Het gaat volgens mij fout met de ou=users.
users is geen ou maar een container. /in dit geval zou het dc=users, e.d. moeten zijn.
Ik ben hier wel eens vaker tegenaangelopen.

Handiger is het om een eigen ou aan te maken. (UserAccounts of zo.)
Hierop kun je ook policies e.d. zetten.

Everything should be made as simple as possible, but not simpler. (A. Einstein)


  • eagle00789
  • Registratie: November 2005
  • Laatst online: 28-01 14:09

eagle00789

Est. November 2005

Hierbij de beloofde excelsheet die je het werk een stuk makkelijker kan maken. Je kunt de excelsheet (gezipt) vinden op http://www.decomputeur.nl...rCreationScriptSource.zip

  • jjbstolk
  • Registratie: September 2001
  • Laatst online: 11:18
Deze gebruikt ik altijd, VBScript werkt samen met een csv. Ik maak altijd een Excel bestand met daarin een paar regels zodat je maar 1 keer de naam hoeft in te vullen en de rest wordt dmv. regels samengesteld, daarna een export naar CSV:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
Option Explicit

Dim objRootLDAP, objContainer, objUser
Dim strOU, strCSVPath, strCSVFile, strUsers, strPRFPATH, strSHR, strHIDDEN
Dim strSam, strCN, strFirst, strLast, strPWD, strUPN, strHDP
Dim objFileSystem, inputFile, inputFileStream, strDelimiter
Dim objFSO,strHomeFolder,strPRFCFG,objShell, strUser, intRunError

'**********************************************************************
'LET OP: Voor een dryrun pas de volgende waarde aan'
'**********************************************************************
const dryrun = "1"

'**********************************************************************
' Opgelet! pas de OU= en strSheet aan indien nodig
'**********************************************************************

strOU = "OU=OU_Water_en_Vuur_Users ," ' let op de komma
strCSVFile = "c:\script\users.csv"
strUsers = "\\wenvsrv01\"
strPRFPATH = "\profile.cfg"
strSHR = "D:\users\"
strHidden = "$"
strDelimiter= ";" 'teken dat gebruikt wordt in de csv file velden te scheiden.

' Active Directory, Users container.
Set objRootLDAP = GetObject("LDAP://rootDSE")
Set objContainer = GetObject("LDAP://" & strOU & _
objRootLDAP.Get("defaultNamingContext")) 

' Lees de csv file in.
Set objFileSystem = CreateObject("Scripting.fileSystemObject")
Set inputFile = objFileSystem.GetFile(strCSVFile)
Const ForReading = 1 ' means: open for reading
Const TristateDefault = -2 ' means: read as ASCII
Set inputFileStream = inputFile.OpenAsTextStream(ForReading, TristateDefault)


'main loop through all lines in inputFile
Dim aktInputLine, entries

do until (inputFileStream.atEndOfStream)

    'read next line from input file
   aktInputLine = inputFileStream.ReadLine
   
   'Lege regels overslaan
   if aktInputLine <> "" then

        'put CSV-data into entries array.
        entries = Split(aktInputLine, strDelimiter)
        
        '**********************************************************************
        ' now, entries(0), entries(1), etc contain the actual line's data and may be used in the script,
        '**********************************************************************
        strSam      =   Entries(0)
        strCN       =   Entries(1)
        strFirst    =   Entries(2)
        strLast     =   Entries(3)
        strPWD      =   Entries(4)
        strUPN      =   Entries(5)
        strHDP      =   Entries(6)
        
        if dryrun = "1" then
        
            wscript.echo "SAMAccountName: " & strSam & " CN: " & strCN & " Firstname: " & strFirst & " Lastname: " & strLast & " Password: " & strPWD & " UPN: " & strUPN & " HDP: " & strHDP
            
        end if
        
        
        if dryrun = "0" then
            
            '**********************************************************************
            ' Maakt de gebruiker aan aan de hand van de data in strSheet.
            '**********************************************************************
            Set objUser = objContainer.Create("User", "cn=" & strCN)
            objUser.sAMAccountName = strSam
            objUser.givenName = strFirst
            objUser.sn = strLast
            objuser.userPrincipalName = strUPN
            objuser.homedrive = strhdp
            objuser.homeDirectory = strUsers & strSam & strHidden
            objuser.profilePath = strUsers & strSam & strHidden & strPRFPATH
            
            objUser.SetInfo
            
            '**********************************************************************
            'Maakt user homedir aan
            '**********************************************************************
            Set objFSO = CreateObject("Scripting.FileSystemObject")
            strHomefolder = strSHR & strSam
            strPRFCFG = strSHR & strSam & strPRFPATH

            If not objFSO.FolderExists (strHomefolder) then
                objFSO.CreateFolder (strHomefolder)
                objFSO.CreateFolder (strPRFCFG)
            End If
            
            '**********************************************************************
            ' Zet NTFS rechten op de User's Homefolder
            '**********************************************************************
            Set objShell = CreateObject("Wscript.Shell")
            Set objFSO = CreateObject("Scripting.FileSystemObject")
            If objFSO.FolderExists(strHomeFolder) Then
            intRunError = objShell.Run("%COMSPEC% /c Echo Y| cacls " _
            & strHomeFolder & " /t /e /c /g " & strSam & ":C ", 2, True)
               If intRunError <> 0 Then
               Wscript.Echo "Error Toewijzen van permissie voor user " _
               & strUser & " op home folder " & strHomeFolder
               End If   
            End If
            If objFSO.FolderExists(strHomeFolder) Then
             objShell.Run ("cacls " & strHomeFolder & " /E /R users")
             objShell.Run ("cacls " & strHomeFolder & strPRFPATH & " /E /R users")
            End If

            'Maakt de homeshare aan, zet de share rechten
            If objFSO.FolderExists(strHomeFolder) Then
            intRunError = objShell.Run("%COMSPEC% /c net share "  _
            &strSam & strHidden &"="& strshr & strSam & " /grant:administrators,full /grant:"& strSam &",full")
               If intRunError <> 0 Then
               Wscript.Echo "Error Toewijzen van permissie voor user " _
               & strUser & " op home folder " & strHomeFolder
               End If
            End If

            'disables de caching op de users homeshare
            If objFSO.FolderExists(strHomeFolder) Then
            intRunError = objShell.Run("%COMSPEC% /c net share "  _
            &strSam & strHidden & " /cache:none")
               If intRunError <> 0 Then
               Wscript.Echo "Error Toewijzen van permissie voor user " _
               & strUser & " op home folder " & strHomeFolder
               End If
            End If

           ' Activeer Account en zet het wachtwoord
           objUser.userAccountControl = 512
           objUser.pwdLastSet = 0
           objUser.SetPassword strPWD
           objUser.SetInfo
        
        end if
    
    end if

loop


CSV is opgebouwd als volgt:
NWellink;Nout Wellink;Nout;Wellink;Wachtwoord;N.Wellink@Doemin.nl;p:

  • Yalopa
  • Registratie: Maart 2002
  • Niet online

Yalopa

Less is more!

Vandaag iets gelijkaardigs gedaan met powershell voor groepen

code:
1
import-Csv .\GroupsCSV.csv | where {New-ADGroup -name $_.name -groupscope $_.GroupScope -displayname $_.name -SamAccountName $_.name -groupcategory $_.GroupCategory -path $_.path}


CSV file format
code:
1
2
"Name","GroupCategory","GroupScope","Path"
"GROUPNAME","security","DomainLocal","OU=DL_groups,OU=TEST,DC=domain,DC=local"


Walk in the park :)

You don't need eyes to see, you need vision

Pagina: 1