We help IT Professionals succeed at work.

Using Powershell to retrieve mail attributes

3,546 Views
Last Modified: 2014-11-14
I need some help.  I am trying to use Get-ADuser cmdlet to retrieve the mail attributes of each user.  What I would really like is to just export into a .csv the name and the mail attribute.  I tried this using ISE.

import-module ActiveDirectory
Get-ADuser -filter * -properties mail| Export-Csv C:\temp\Computer.csv

That way I could modify the .csv but it did not import the mail.  Really could use some help. Thanks much in advance.
Comment
Watch Question

Dan McFaddenTechnical Lead - Active Directory
CERTIFIED EXPERT

Commented:
I would use the following:

Get-ADUser -filter * -SearchBase "OU=Your,OU=Structure,OU=GoesHere,DC=YouDomainName,DC=Extension" -Properties * | select Name, SamAccountName, UserPrincipalName, EmailAddress | Export-Csv EmailAddresses.csv -noTypeInformation -UseCulture

Open in new window


Just update the SearchBase value and run.

Dan
Dan McFaddenTechnical Lead - Active Directory
CERTIFIED EXPERT

Commented:
A slight cleaner version of this would be:

import-module ActiveDirectory
$SearchBase = "OU=Your,OU=Structure,OU=GoesHere,DC=YouDomainName,DC=Extension"
$SearchScopeControl = "OneLevel"
$OutputFile = "MyOutputFile.csv"

Get-ADUser -filter * -SearchBase $SearchBase -SearchScope $SearchScopeControl -Properties * | select Name, SamAccountName, UserPrincipalName, EmailAddress | Export-Csv EmailAddresses.csv -noTypeInformation -UseCulture

Open in new window


This does the same as the first post, but it is easier to edit when you want to reuse it.  And the "SearchScope" option let's you control how deep in the OU structure the script runs.

Options for $SearchScopeControl are:
1. Base
2. OneLevel
3. Subtree

From Microsoft:
A Base query searches only the current path or object. A OneLevel query searches the immediate children of that path or object. A Subtree query searches the current path or object and all children of that path or object

Reference Link:  http://technet.microsoft.com/en-us/library/ee617241.aspx

Dan

Author

Commented:
Put in the information from Powershell ISE.  But where is the csv?  Does it have something to do with this?  Do I = it to something?

$OutputFile = "MyOutputFile.csv"

Author

Commented:
Nevermind,,,,, I'm and idiot worked great!!!!!!  Thank you

Author

Commented:
Going to close this out.  Just curious.  But what does this mean?

$OutputFile = "MyOutputFile.csv" ,  where do I stick this variable at if I use it,, or is it being used?
Technical Lead - Active Directory
CERTIFIED EXPERT
Commented:
This problem has been solved!
(Unlock this solution with a 7-day Free Trial)
UNLOCK SOLUTION

Author

Commented:
You are awesome...  I know those long days too.  But go into the weekend that you really helped me out with this!!!!!!   Much appreciated,,, and thank you so much.

Author

Commented:
Expert knows his stuff.  Hope all people with questions can find him.

Author

Commented:
HELP,,,,  need one more thing.  I have OU's that equal *Laptops, and under that I have Laptop Users OU.  I have this

import-module ActiveDirectory
$SearchBase = "OU=*Laptops,OU=Laptop Users,DC=oxarc1,DC=int"
$SearchScopeControl = "OneLevel"
$OutputFile = "C:\temp\EmailAddresses.csv"
Get-ADUser -filter * -SearchBase $SearchBase -SearchScope $SearchScopeControl -Properties * | select Name, SamAccountName, UserPrincipalName, EmailAddress| Export-Csv $OutputFile -noTypeInformation -UseCulture

But I get this error.  

Get-ADUser : Directory object not found
At C:\Users\tmb.OXARC1\Documents\Script_Commands\attibutesbysearchbase.ps1:5 char:11
+ Get-ADUser <<<<  -filter * -SearchBase $SearchBase -SearchScope $SearchScopeControl -Properties * | select Name, SamAccountName, UserPrincipalName, EmailAddress| Export-Csv $OutputFile -noTypeInformation -UseCulture
    + CategoryInfo          : ObjectNotFound: (:) [Get-ADUser], ADIdentityNotFoundException
    + FullyQualifiedErrorId : Directory object not found,Microsoft.ActiveDirectory.Management.Commands.GetADUser
 
I hope this pasted right on this comment box.  But it works with *Laptops OU but not the OU underneath *Laptops which is Laptop Users.   I tried all three scopeControls but it didn't work.  

Can you help me one last time?

Author

Commented:
Nevermind.  I got it.  I see better how it works.  I have to only put the base OU,  then change the value of $SearchScopeControl.   Getting better at it.  Only question then is,  If I have 4 sub OU's in *Laptops  how to I get only 1 Sub OU that I need.  e.g.  OU=*Laptops, but I only want Laptop Users is Spokane or Yakima.  OU structure would be "OU=*Laptops,OU=Yakima Users". <-----  Only want Yakima not Spokane which is also in the *Laptops OU?     Hope I made sense.

Gain unlimited access to on-demand training courses with an Experts Exchange subscription.

Get Access
Why Experts Exchange?

Experts Exchange always has the answer, or at the least points me in the correct direction! It is like having another employee that is extremely experienced.

Jim Murphy
Programmer at Smart IT Solutions

When asked, what has been your best career decision?

Deciding to stick with EE.

Mohamed Asif
Technical Department Head

Being involved with EE helped me to grow personally and professionally.

Carl Webster
CTP, Sr Infrastructure Consultant
Empower Your Career
Did You Know?

We've partnered with two important charities to provide clean water and computer science education to those who need it most. READ MORE

Ask ANY Question

Connect with Certified Experts to gain insight and support on specific technology challenges including:

  • Troubleshooting
  • Research
  • Professional Opinions