今天接到了这个需求,经过一些研究导出成功了,所以把方法和大家分享一下。

如果只是通过 Exchange 管理命令行来导出一个通讯组的成员的名单的话,我们通常可以使用这条命令:

Get-DistributionGroupMember | fl Name >C:\Temp\ExportMembers.txt

但是这是无法导出那些人的描述的。

比如你的组织把员工的工号写在了描述里,然后你需要导出一个通讯组里的人的名字和工号,那么只用 Exchange 管理命令行就是很难实现需求的了。

我是在域控制器上执行的这个操作,它可以比在 Exchange 里能做到的更多。因为其实 Exchange 上的所谓 “通讯组”,其实就在在 AD 上的 AD 组。

所以我们可以用 Get-AdGroupMember 这个命令来实现我们的需求。

今天笔者所用到的命令如下,可供大家参考:

Get-ADGroupMember "GroupName" | Get-AdUser -Properties Description | fl Name,Description >C:\Temp\ExportNameAndDescription.txt

它的作用是,先获取到 AD 组里面的所有成员,然后再通过管道符把获取到的成员的 Identity 给传递到 Get-AdUser 命令里。

比如这个组里有 100 个成员,那么管道符就会把这 100 个成员的 Identity 传递到 Get-AdUser 命令下。

然后 Get-AdUser 命令会获取这些所有成员的 Description 属性,然后通过 fl 动作列出他们的 Name 和 Description,最终输出成一个 .txt 格式的纯文本文档。

以上方法实现了笔者的需求,不知道是不是最优解。

当然,如果你有更好的方法,或者你有在 Exchange 里直接获取通讯组成员的描述的方法,也欢迎和我们一起分享一下。