This script will create contacts in Active Directory based on a formatted CSV file. It was written to allow automatic synchronisation of contacts using a CSV file as the source.
The usage for the script will echo when run without any parameters.
cscript ContactImport.vbs -f "<File Name>" -o "<Organisational Unit>"
[-r] [-s] [-a "<attributes>"] [-d "<delimiter>"] [-n "<Name Foramt>"] [-t]
-f "<File Name>" – Input File Name (Required)
-o "<Organisational Unit>" – Target OU for Contact Objects (Required)
-r – Read the Header Line as AD Fields
-s – Skip the Header Line
-a "<attributes>" – AD Attibutes to write Fields to (Required if not using Header)
-d "<delimiter>" – File Delimiter. Uses comma if not specified.
-n "<Name Format>" – DisplayName and CN Format by AD Attributes. Uses TargetAddress if not specified.
-t – Test Only
Usage examples
Reading data from a CSV using the header line as fields
Example CSV file data:
givenName,sn,TargetAddress,streetAddress,streetAddress
Chris,Dent,chris.dent@domain.example,123 Somewhere Street,London
The following command will read the header line as the fields to import, then create contacts using givenName and sn as the display name / name.
cscript ContactImport.vbs -f Contacts.csv -o “OU=Contacts,DC=domain,DC=example” -r -n “givenName sn”
The attribute streetAddress appears twice, it will be concatenated using a comma as a delimiter. The streetAddress attribute will contain “123 Somewhere Street, London” in this example.
Defining attributes on the command line
Example CSV file data:
Chris,Dent,chris.dent@domain.example,SomeCorp,SomeOffice
The following command will read the file, then import attributes based on the -a value which must reflect the order of attributes in the import file.
cscript ContactImport.vbs -f Contacts.csv -o "OU=Contacts,DC=domain,DC=example" -a "givenName,sn,targetAddress,company,physicalDeliveryOfficeName"
Because no displayName format has been specified the targetAddress field will be used.
Using a custom file delimiter
Example file data:
FirstName|LastName|Address
Chris|Dent|chris@domain.example
In this example the header line contains names that cannot be used as attributes in Active Directory so the script is instructed to ignore it with -s. The fields are defined instead using the -a option. The Delimited is specified with -d.
cscript ContactImport.vbs -f Contacts.txt -o "OU=Contacts,DC=domain,DC=example" -a "givenName,sn,targetAddress" -s -d "|"
As above, because no displayName format is specified the targetAddress is used.