我需要在新(O365)环境中重新创建数百个通讯组。除了与他们的技术人员合作以提供他们将为我运行的脚本外,我无权访问源系统。
我编写了一个脚本来吐出我的用户所属的所有列表的名称(安全性和分发性)。我想写另一个来遍历每个通讯组,并向我提供该通讯组的详细信息。我不知道该怎么做。
我看到Set-DistributionGroup会很乐意让我设置AcceptMessagesOnlyFromDLMembers(以及其他一百万个字段),但是我看不到Get_DistributionGroup会为我输出这些值。如何确保我不会为应该为MemberJoinRestriction启用(例如)的HR重新创建开放组?
谢谢。
答案 0 :(得分:0)
好的,所以我不是PowerShell的人(不熟悉),但这是我写的可行的内容。我敢肯定,我在这里根本没有利用PowerShell,所以想建议我如何改进?就像为什么我必须使用$ temp?在再次获取ADGroup之前更快地先检查阵列吗?等
# Start with a user list, get the groups eash is a part of, get information about the group
# if it is mail-enabled then add it to an array, remove duplicates, then store all the
# information about that DistributionGroup into a .csv
$groups = @()
ForEach ($user in $(Get-Content c:\Users\sid.sowder\Desktop\CEGusers.txt)) {
$MyGroups = Get-ADuser $user -Properties * | select memberof -ExpandProperty memberof
ForEach ($MyGroup in $MyGroups) {
$temp = Get-ADGroup $MyGroup -Properties *
if ($temp.mail -ne $null) {
$groups += $temp.SamAccountName
}
}
}
$groups = $groups | sort -unique
Foreach ($group in $groups) {
Get-DistributionGroup -Identity $group |
Select * |
Export-CSV C:\Users\Sid.Sowder\Desktop\distlistdetail.csv -NoTypeInformation -Append
}