Powershell查询AD以导出.txt文件中所有用户的电子邮件?

时间:2015-02-13 20:23:24

标签: powershell active-directory

我想编写一个PS脚本,为单独的.txt文件中指定的所有用户导出.csv。因此,例如,我可以创建一个具有

的文本文件
Timmy Turner
Silly Sally

然后,当脚本运行时,它会搜索AD以查找这两个用户,并使用其名字,姓氏和电子邮件地址导出CSV。

我最初对“Get-ADUser”过滤器的工作方式有所了解,但我制作了一些半可用的东西。但是,我想出来的只是问你要搜索的是谁然后使用它。我认为让它引用预先制作的文本文件要容易得多,特别是在搜索大量用户时。或者,可能有一种更简单的方法来做到这一点,我没有想到。这是我现在拥有的:

$SamAc = Read-Host 'What is the first and last name of the person you would like to search for?'
$filter = "sAmAccountname -eq ""$SamAc"""

Get-ADUser -Filter $filter -Properties FirstName, LastName, EmailAddress | select FirstName, LastName, EmailAddress | Export-CSV "C:\Scripts\PS_ADQuery\Email_Addresses.csv" 

我觉得“Get-Content”cmdlet接近我正在寻找的内容,但我似乎无法让它正常运行。不过,我可能会走向完全错误的方向。

1 个答案:

答案 0 :(得分:0)

我找到了答案。事实证明,我甚至将AD属性完全错误。因为我可能不完全理解每行代码背后的过程,所以我的评论很多,但这正是我想要做的。

#creates a $users variable for each username listed in the users.txt file. the ForEach
#command allows you to loop through each item in the users.txt array. the scriptblock 
#nested into the ForEach command queries each username for specific properties.
$users = ForEach ($user in $(Get-Content C:\Scripts\PS_ADQuery\users.txt)) {

    Get-AdUser $user -Properties GivenName,sn,mail

}

#takes the $users variable defined by the ForEach command and exports listed properties 
#to a csv format.     
 $users |
 Select-Object GivenName,sn,mail |
 Export-CSV -Path C:\Scripts\PS_ADQuery\output.csv -NoTypeInformation