使用PowerShell获取通讯组详细信息

时间:2019-03-14 22:04:26

标签: powershell

我需要在新(O365)环境中重新创建数百个通讯组。除了与他们的技术人员合作以提供他们将为我运行的脚本外,我无权访问源系统。

我编写了一个脚本来吐出我的用户所属的所有列表的名称(安全性和分发性)。我想写另一个来遍历每个通讯组,并向我提供该通讯组的详细信息。我不知道该怎么做。

我看到Set-DistributionGroup会很乐意让我设置AcceptMessagesOnlyFromDLMembers(以及其他一百万个字段),但是我看不到Get_DistributionGroup会为我输出这些值。如何确保我不会为应该为MemberJoinRestriction启用(例如)的HR重新创建开放组?

谢谢。

1 个答案:

答案 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
}