导出安全组中所有用户的电子邮件地址

时间:2014-01-15 22:13:11

标签: powershell windows-server-2008-r2

我尝试编写可以获取活动目录安全组中所有用户的电子邮件地址的脚本。

到目前为止我所拥有的:

$Groups = Get-ADGroup -filter {Name -like "VIPEmail" } | Select-Object Name
ForEach ($Group in $Groups) {
  Get-ADGroupMember -identity $($group.name) -recursive | Select-Object samaccountname
}

显然这只会返回它所做的samaccountname。我将samaccountname替换为EmailAddress,它什么都不做。

5 个答案:

答案 0 :(得分:3)

这样的事情:'

Get-ADGroup -filter {name -like 'VIPEmail'} | 
Get-ADGroupMember -Recursive |
Get-ADUser -Properties Mail |
select -ExpandProperty Mail

答案 1 :(得分:2)

要保持原始格式,以便您可以看到出错的地方:

$Groups = Get-ADGroup -filter {Name -like "09-Admins" } | Select-Object Name
ForEach ($Group in $Groups) {
   Get-ADGroupMember -identity $($group.name) -recursive | Get-ADUser -Properties mail | Select-Object mail
}

问题是您正在尝试读取Get-ADGroupMember返回类型不具有的属性(Microsoft.ActiveDirectory.Management.ADPrincipal)。您需要将该返回值传递给Get-ADuser并指定您希望它来拉取emailaddress属性。默认情况下,Get-ADUser不会提取用户的大多数属性,因此您需要指定要检索的任何其他属性(或者只选择" -Properties *"所有这些属性,但是" 39;有点邋。)。

Mjolinor打败了我的答案,但我认为值得详细说明他的回答。

答案 2 :(得分:0)

我添加了唯一的。因此,当用户在更多组中时,只显示一封电子邮件:

Get-ADGroup -filter {Name -like "RO*" } | 
Get-ADGroupMember -Recursive | 
select -Unique| 
get-adUser -Properties mail |
select -ExpandProperty Mail

答案 3 :(得分:0)

Get-ADGroupMember GroupName | get-aduser -properties mail | select mail | Sort-Object mail

如果您有嵌套组,可以将上述内容更改为:

Get-ADGroupMember -Recursive GroupName | get-aduser -properties mail | select mail | Sort-Object mail

答案 4 :(得分:0)

我去了:

 'async_generator' object is not iterable

...只需确保已安装必要的powershell模块,即可访问Get-ADGroupMember -Identity your_ad_group_name_here -Recursive | Get-ADUser -Properties * | Select SamAccountName,mail,EmailAddress,Manager 。您可以在此处下载特定于Windows 10版本的Get-ADGroupMember-https://www.microsoft.com/en-us/download/details.aspx?id=45520