我花了 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)" }
据我所知,您无法使用 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 这是一个类似的讨论,它显示了一种稍微不同的方法,用于递归地获取可能派上用场的特定组内嵌套组的所有邮箱成员。
参考资料: