我需要帮助找到一个 powershell 命令来查找所有具有分配了“SendAs”权限的 AD 安全组的共享邮箱;到一个文本文件。
我目前拥有的脚本是:
$ExchangeSession = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri "http://MY-EXCHANGE BOX/PowerShell/" -Authentication Kerberos
Import-PSSession $ExchangeSession
$WFMGroups = $GroupSAMs = %{Get-Mailbox $_ | select -ExpandProperty dist* | %{Get-ADPermission $_ |
?{$_.extendedrights -like '*Send-As*'} | select -ExpandProperty User | %{$_.tostring().replace("DOMAIN\","")}} |
%{get-adobject -filter{samaccountname -eq $_}} | ?{$_.ObjectClass -eq "group"}} | select -ExpandProperty name
foreach ($WFMGroup in $WFMGroups)
{
$WFMGroup.GroupScope = "Universal"
Set-DistributionGroup -Identity $WFMGroup -Alias $WFMGroup
Set-DistributionGroup -Identity "$WFMGroup" -EmailAddressPolicyEnabled "$false" -DisplayName "$WFMGroup" -PrimarySmtpAddress "[email protected]" -HiddenFromAddressListsEnabled:$true -ManagedBy "AD-OBJECT"
}
答案1
无法访问 ActiveDirectory 模块 (正如您在其他论坛的帖子中提到的那样), 要实现您的目标,您需要使用 Exchange 命令行管理程序(或其隐式远程处理等效项)中提供的工具来执行此操作。
具体来说,将脚本的这一行替换为:
%{get-adobject -filter{samaccountname -eq $_}} | ?{$_.ObjectClass -eq "group"}} | select -ExpandProperty name
使用这一行(注意别名扩展):
ForEach-Object {Get-Recipient $_} | Where-Object {$_.RecipientType -like "*Group"}
使用前请彻底测试。
另外我强烈建议反对以这种方式以编程方式更新组范围 - 其他设置可能没问题。更改如此多范围的组范围的问题是,您不可避免地会遇到将全局组的范围更改为通用组的情况,但由于它是另一个全局组的成员(不能将通用组作为成员)而失败。