Importing additional attributes after CSVDE

Posted on 2008-10-17
Last Modified: 2013-12-24
Inherited an AD setup where previous admin imported pupil information using CSVDE. The only attributes that where in the csv file where the essential, objectClass, sAMAccountName and DN.
I want to be able to populate the other fields, eg displayName, givenName, sn etc. I can do the Profile path using dsquery/dsmod pipes.
I was thinking I could create a new csv file with the relevant structure and attributes but won't that moan that the account already exists?
What's the best way to achieve this?
Question by:SeventhZen
  • 2
LVL 18

Accepted Solution

exx1976 earned 500 total points
ID: 22742313
This code should do what you want.

You need to edit line 1 with the netbios name of your domain.

The script expects an xls file in the same directory as the script named "Source.xls".

The spreadsheet should have a header row, as this script will start reading information from the second row, and will stop when it encounters a row that is completely blank.  If any column of a row has data, the entire row should be populated.  Column A should be the users SAMAccountName (to locate the user in AD), column B should be the DisplayName you want, colulmn C the GivenName, column D the sn.

Domain = "MyDomain"

bEmpty = False

sPath = WScript.ScriptFullName

sPath = Left(sPath,Len(sPath)-Len(WScript.ScriptName))

Set oExcelApp = CreateObject("Excel.Application")

Set oWorkbook = oExcelApp.Workbooks.Open(sPath & "Source.xls")

Set oWorksheet = oWorkbook.Worksheets(1)


oExcelApp.Visible = False

Dim ArrVals(3)

iCounter = 2

Do Until bEmpty = True

	EmptyCounter = 0

	For q = 0 To 3

   		ArrVals(q) = ""

   		ArrVals(q) = oWorksheet.Cells(iCounter, q + 1)

   		If ArrVals(q) = "" Then EmptyCounter = EmptyCounter + 1


   	If EmptyCounter = 4 Then 

   		bEmpty = True

    End If

    iCounter = iCounter + 1


bEmpty = False

iCounter = 2

Do Until bEmpty = True

	EmptyCounter = 0

	For q = 0 To 3

		ArrVals(q) = ""

		ArrVals(q) = oWorksheet.Cells(iCounter, q + 1)

		If ArrVals(q) = "" Then EmptyCounter = EmptyCounter + 1


	If EmptyCounter = 0 Then

    	AddAttributes ArrVals(0), ArrVals(1), ArrVals(2), ArrVals(3)

    	iCounter = iCounter + 1

    End If

    If EmptyCounter = 4 Then bEmpty = True


If iCounter = 2 Then 




End If

Sub AddAttributes(byVal samAccountName, byVal DisplayName, byVal GivenName, byVal sn)

	DN = GetObjectDN(samAccountName,Domain)

	Set oUser = GetObject("LDAP://" & DN)

	oUser.DisplayName = Displayname = sn

	oUser.GivenName = GivenName


End Sub

Function GetObjectDN(strObject, strDomain)

      Const ADS_NAME_INITTYPE_GC = 3

      Const ADS_NAME_TYPE_1779 = 1

      Const ADS_NAME_TYPE_NT4 = 3

      Dim objNameTranslate

      Dim strObjectDN

      On Error Resume Next : Err.Clear

      Set objNameTranslate = CreateObject("NameTranslate")

      objNameTranslate.Init ADS_NAME_INITTYPE_GC, ""

      objNameTranslate.Set ADS_NAME_TYPE_NT4, strdomain & "\" & strObject

      strObjectDN = objNameTranslate.Get(ADS_NAME_TYPE_1779)

      If Err.Number <> 0 Then

            strObjectDN = ""

      End If

      Set objNameTranslate = Nothing

      On Error Goto 0

      GetObjectDN = strObjectDN

End Function

Open in new window


Author Comment

ID: 22784885
Thanks for this, I wouldn't have had a clue.
I'm assuming this needs to be saved as a vbs file and run using cscript before the path to the script.

I'm on site tomorrow so I will let you know.


Author Comment

ID: 22883990
Thanks for this, worked like a charm.

Featured Post

Netscaler Common Configuration How To guides

If you use NetScaler you will want to see these guides. The NetScaler How To Guides show administrators how to get NetScaler up and configured by providing instructions for common scenarios and some not so common ones.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Disabling the Directory Sync Service Account in Office 365 will stop directory synchronization from working.
In this article, I am going to show you how to simulate a multi-site Lab environment on a single Hyper-V host. I use this method successfully in my own lab to simulate three fully routed global AD Sites on a Windows 10 Hyper-V host.
This tutorial will walk an individual through the process of configuring their Windows Server 2012 domain controller to synchronize its time with a trusted, external resource. Use Google, Bing, or other preferred search engine to locate trusted NTP …
This Micro Tutorial hows how you can integrate  Mac OSX to a Windows Active Directory Domain. Apple has made it easy to allow users to bind their macs to a windows domain with relative ease. The following video show how to bind OSX Mavericks to …

896 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now