Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1479
  • Last Modified:

Using Powershell to retrieve mail attributes

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.
0
get-ADuser -F ($_.Name -eq "Todd")
Asked:
get-ADuser -F ($_.Name -eq "Todd")
  • 7
  • 3
1 Solution
 
Dan McFaddenSystems EngineerCommented:
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
0
 
Dan McFaddenSystems EngineerCommented:
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
0
 
get-ADuser -F ($_.Name -eq "Todd")Systems AdministratorAuthor 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"
0
Problems using Powershell and Active Directory?

Managing Active Directory does not always have to be complicated.  If you are spending more time trying instead of doing, then it's time to look at something else. For nearly 20 years, AD admins around the world have used one tool for day-to-day AD management: Hyena. Discover why

 
get-ADuser -F ($_.Name -eq "Todd")Systems AdministratorAuthor Commented:
Nevermind,,,,, I'm and idiot worked great!!!!!!  Thank you
0
 
get-ADuser -F ($_.Name -eq "Todd")Systems AdministratorAuthor 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?
0
 
Dan McFaddenSystems EngineerCommented:
$OutputFile = "MyOutputFile.csv" ,  where do I stick this variable at if I use it,, or is it being used?

That is the path to the result set.  This is where the output of the powershell command is saved.  And, it is not being used but I've updated the code... again.  It was a long day for me yesterday.  Sorry...

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

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

Open in new window


You will notice that the $Outputfile is now in the last pipe section of the command.  You can update the 3 variables at the start of the code to adjust the AD OU, the depth at which you want to search and where you want the results saved.

The $Outputfile can be just a filename or a complete path to the file.  Both of these are valid:

$OutputFile = "C:\reports\email\EmailAddresses.csv"
$OutputFile = "EmailAddresses.csv"

When using just a filename, the csv will be saved in the same location as where the script is located.

Dan
0
 
get-ADuser -F ($_.Name -eq "Todd")Systems AdministratorAuthor 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.
0
 
get-ADuser -F ($_.Name -eq "Todd")Systems AdministratorAuthor Commented:
Expert knows his stuff.  Hope all people with questions can find him.
0
 
get-ADuser -F ($_.Name -eq "Todd")Systems AdministratorAuthor 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?
0
 
get-ADuser -F ($_.Name -eq "Todd")Systems AdministratorAuthor 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.
0

Featured Post

Who's Defending Your Organization from Threats?

Protecting against advanced threats requires an IT dream team – a well-oiled machine of people and solutions working together to defend your organization. Download our resource kit today to learn more about the tools you need to build you IT Dream Team!

  • 7
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now