Import Distribution Lists from CSV into Exchange 2010

Hello,

I have a CSV file containing entries I would like to add to an Exchange Distribution List using Powershell. I have learned how to create a distribution list using Powershell, but still not sure how to add a list of entries into the Distribution List via Powershell.

I can create a distribution list like this and it works:

New-DistributionGroup -name "ITDepartment" -IgnoreNamingPolicy

Now that I have a Distribution Group, how do I add members into it using Powershell? Here is the structure of my CSV file, and it is located on my c: drive:

<Email>,<FullName>

How can I use PowerShell to add a line entry from this CSV file into the Distribution List I created? Then, how would I use PowerShell to add all entries from the CSV file?

Thanks for your help.

John
LVL 1
jhiebAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Adam BrownSr Solutions ArchitectCommented:
You would utilize the import-csv cmdlet and the add-distributiongroupmember cmdlets together to do this. Adding all the entries is a lot easier than just adding a single line from the CSV, so I'll just give you that one :D

import-csv <csv filename> | foreach {add-distributiongroupmember "ITDepartment" -member $_.email}

Open in new window


Basically, the import-csv cmdlet reads out each entry in the CSV file. The | character is a pipeline that pushes what is read from the import-csv cmdlet into whatever is next. Foreach tells the system that for each line read from the CSV file, do the following. Then we use add-distributiongroupmember against the ITDepartment List and add the member by using the pipelined email variable. $_.<attribute> is what does that.
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
jhiebAuthor Commented:
Thanks. I ran the command and it seems to have worked, but my members did not show up in the ITDepartment list. Do I need to delare column headers or something so that PowerShell knows the format of the CSV file? I don't understand how PowerShell will know which values to use, and this part of your example confuses me:

{add-distributiongroupmember "ITDepartment" -member $_.email}

How does this tell PS which columns are what?

Attached, is a sample CSV file.

Thanks.
dlist.txt
0
Adam BrownSr Solutions ArchitectCommented:
Yes, you do have to have a header line for the CSV to be readable.
add this to the top line of your CSV:

name,email
0
Has Powershell sent you back into the Stone Age?

If managing Active Directory using Windows Powershell® is making you feel like you stepped back in time, you are not alone.  For nearly 20 years, AD admins around the world have used one tool for day-to-day AD management: Hyena. Discover why.

jhiebAuthor Commented:
Thanks. That worked and I was able to add two dlist members to the list. I get an error with this command. Do you know how to get rid of this error?



[PS] C:\>import-csv c:\temp\dlist.txt | foreach {add-distributiongroupmember "ITDepartment" -member $_.email}
Cannot validate argument on parameter 'Member'. The argument is null. Supply a non-null argument and try the command ag
ain.
    + CategoryInfo          : InvalidData: (:) [Add-DistributionGroupMember], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationError,Add-DistributionGroupMember

Cannot validate argument on parameter 'Member'. The argument is null. Supply a non-null argument and try the command ag
ain.
    + CategoryInfo          : InvalidData: (:) [Add-DistributionGroupMember], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationError,Add-DistributionGroupMember

[PS] C:\>
0
Adam BrownSr Solutions ArchitectCommented:
That means that the value read in from the CSV file didn't have any data in it. If you have any empty lines at the end of your CSV file, or if any line has a name but no email address it will do that.
0
jhiebAuthor Commented:
I thought I needed a carriage return after each entry. It looks like all I need is a line entry. Thank you for the help. This works great!
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Exchange

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.