Solved

Need Help With Powershell Script

Posted on 2008-10-08
11
765 Views
Last Modified: 2013-12-24
Hello. I am looking for some assistance creating a Powershell Script to do the following.

1. List all users of a specific group in active directory and write to an XLS

2. Then I want to use the users in the XLS and get the email  address's dumped to an XLS.

This is what I have found to start with, however it doesn't return any thing within PS.

$root=([ADSI]"").distinguishedName
$Group = [ADSI]("LDAP://CN=Domain Admins, CN=Users,"+ $root)
$Group.member




Any Powershell Guru's here ?

Thanks
0
Comment
Question by:MelittaChickadee
  • 5
  • 4
  • 2
11 Comments
 
LVL 70

Expert Comment

by:Chris Dent
ID: 22676874

I would approach it from the other way. Searching AD for the members allows us to return any property we might need in a single search.

HTH

Chris

$Root = [ADSI]""
 

# Construct the search filter

$Filter = "(memberOf=CN=Domain Admins,CN=Users," + $root.distinguishedName + ")"
 

# Create a searcher

$ADSearch = New-Object System.DirectoryServices.DirectorySearcher($Root, $Filter)
 

# Add properties we're interested in the to result set

$PropertyNo = $ADSearch.PropertiesToLoad.Add("sAMAccountName")

$PropertyNo = $ADSearch.PropertiesToLoad.Add("mail")
 

# Sort the results into an exportable object

$Results = $ADSearch.FindAll() | Select-Object `

  @{n="sAMAccountName";e={$_.Properties.samaccountname}}, `

  @{n="mail";e={$_.Properties.mail}}
 

# Write the output to a CSV

$Results | Export-CSV -Path "outputfile.csv"

Open in new window

0
 
LVL 18

Accepted Solution

by:
BSonPosh earned 125 total points
ID: 22678544
If you are going to be doing a lot of Active Directory stuff I would recommend using the free Quest cmdlets located here. www.quest.com/powershell

Then you can do something like
Get-QADGroupMember "Domain Admins" | select name,email | export-csv bleh.csv

Open in new window

0
 
LVL 70

Expert Comment

by:Chris Dent
ID: 22678660

Welcome back BSonPosh :) I thought we'd lost you for a while.

Chris
0
 
LVL 18

Expert Comment

by:BSonPosh
ID: 22678726
I am here all the time :)

I just have been focusing on the Powershell questions.

You on the other hand have been quite busy :)
0
 

Author Comment

by:MelittaChickadee
ID: 22698085
Hello Chris and BSonPosh,

I appreciate the help. When I run the script as is, I receive the folllowing:
Export-Csv : Cannot bind argument to parameter 'InputObject' because it is null.
At line:1 char:22
+ $Results | Export-CSV  <<<< -Path "outputfile.csv"

I would imagine I need to put some variables into this ?

Again, appreciate your help.
0
Microsoft Certification Exam 74-409

Veeam® is happy to provide the Microsoft community with a study guide prepared by MVP and MCT, Orin Thomas. This guide will take you through each of the exam objectives, helping you to prepare for and pass the examination.

 
LVL 18

Expert Comment

by:BSonPosh
ID: 22698294
That error implies that $results is NULL. Did you try my Quest example?
0
 

Author Comment

by:MelittaChickadee
ID: 22705695
Hello BSonPosh,

Yes your recommendation to use Quest cmdlets work great!  I will give you the Accepted Solution. On a side note, how tough is it to do the following in PS using the Quest cmdlets ?

1. Search AD For any user with *whatever.com  email address, export to csv.
2. Then do a bulk edit to change with *.whomever.com email address.

-or-

1. Search AD for any user with *whatever.com email address then simply do a bulk edit to give them a new primary SMTP address of *.whomever.com ?

THoughts ? Again..appreciate your help!

Thanks,
Brian
0
 
LVL 18

Expert Comment

by:BSonPosh
ID: 22705878
It would not be that complicated at all. Something like this [1]

[1] means I didn't test it

btw... I am starting a weekly series on www.turbochargead.org that will cover these cmdlets


$users = Get-Qaduser -ldapfilter "mail=*whatever.com" 

foreach($user in $users)

{

   $user | set-qaduser -objectattributes @{mail="$($user.name)@whomever.com"} -whatif

}

Open in new window

0
 

Author Comment

by:MelittaChickadee
ID: 22706257
I am going to test out of prod , and I will let you know. Anyway I could get the results written to a csv?

Thanks,
0
 
LVL 18

Expert Comment

by:BSonPosh
ID: 22706292
you can almost always use export-csv.

Get-Qaduser -ldapfilter "mail=*whatever.com" | export-csv myfile.csv
0
 

Author Comment

by:MelittaChickadee
ID: 22714000
BSonPosh,

Ran the following :
Qaduser -ldapfilter "mail=*whatever.com"
foreach($user in $users)
{
   $user | set-qaduser -objectattributes @{mail="$($user.name)@whomever.com"} -whatif
}


Nothing happens...just returns me to a >>

Help ?


0

Featured Post

Efficient way to get backups off site to Azure

This user guide provides instructions on how to deploy and configure both a StoneFly Scale Out NAS Enterprise Cloud Drive virtual machine and Veeam Cloud Connect in the Microsoft Azure Cloud.

Question has a verified solution.

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

I thought I'd write this up for anyone who has a request to create an anonymous whistle-blower-type submission form created using SharePoint 2010 (this would probably work the same for 2013). It's not 100% fool-proof but it's as close as you can get…
This article will help you understand what HashTables are and how to use them in PowerShell.
Video by: Steve
Using examples as well as descriptions, step through each of the common simple join types, explaining differences in syntax, differences in expected outputs and showing how the queries run along with the actual outputs based upon a simple set of dem…
Polish reports in Access so they look terrific. Take yourself to another level. Equations, Back Color, Alternate Back Color. Write easy VBA Code. Tighten space to use less pages. Launch report from a menu, considering criteria only when it is filled…

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

13 Experts available now in Live!

Get 1:1 Help Now