我的下面的 Powershell 脚本显示邮件联系人,但不显示 Active Directory 嵌套通讯组。不知道为什么

问题描述 投票:0回答:1

我花了 2 天的时间让下面的 Powershell 脚本在控制台上显示嵌套的通讯组名称。 但这失败了,我不知道为什么。 事实上,我确实知道我的名为 XXX 的组有 2 个邮件联系人作为“成员”,并且有 2 个嵌套通讯组。 我只是显示在控制台上以快速验证。

我需要 powershell 来读取名为“XXX”的 AD 通讯组,并提取并在控制台上显示“XXX”组包含的所有嵌套通讯组名称作为“成员”

非常欢迎任何帮助,因为我已经没有主意了。

脚本如下:

"$UserCredential = Get-Credential
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://ABC.DEF.com/PowerShell/ -Authentication Kerberos -Credential $UserCredential
Import-PSSession $Session -DisableNameChecking
Import-Module Activedirectory
$groupName = 'XXX'
$groupMembers = Get-DistributionGroupMember -Identity $groupName -ResultSize Unlimited
$nestedGroups = $groupMembers | Where-Object { $_.RecipientTypeDetails -eq 'MailUniversalDistributionGroup' }
$nestedGroups | ForEach-Object { Write-Output "Nested Group: $($_.DisplayName)" }
powershell nested distribution
1个回答
0
投票

据我所知,您无法使用 Exchange cmdlet 直接检索嵌套通讯组名称

Get-DistributionGroupMember
。它可以检索通讯组的成员,但不包括嵌套组的成员。

一种可能的方法是使用

Get-ADGroup
模块中的
ActiveDirectory
检索 AD 组,包括嵌套组,然后使用
Get-ADGroupMember $myGroup -Recursive
检索指定组的所有成员。

# Import-Module Activedirectory
$group = Get-ADGroup 'XXX'
if($group){
  $nestedGroups = Get-ADGroupMember $group -Recursive | Where-Object {$_.objectClass -eq 'group'}
  $nestedGroups | ForEach-Object {Write-Output "Nested Group: $($_.Name)"}
}

4 这是一个类似的讨论,它显示了一种稍微不同的方法,用于递归地获取可能派上用场的特定组内嵌套组的所有邮箱成员。

参考资料:

  1. 获取-ADGroup
  2. 活动目录模块
  3. 获取 ADGroupMember
  4. 递归查询常规通讯组的嵌套动态通讯组中的所有成员
© www.soinside.com 2019 - 2024. All rights reserved.