Powershell

如何獲取具有作為發送權限的 AD 安全組的所有郵箱

  • October 10, 2019

我需要幫助以查找 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 "$WFMGroup@maildomain.com" -HiddenFromAddressListsEnabled:$true -ManagedBy "AD-OBJECT"
}

如果無法訪問 ActiveDirectory 模組(如您在其他論壇上的主題中所述),要實現您所尋求的,您需要使用 Exchange 命令行管理程序(或其隱式遠端處理等效項)中提供的工具來執行此操作。

具體來說,替換腳本的這一行:

%{get-adobject -filter{samaccountname -eq $_}} | ?{$_.ObjectClass -eq "group"}} | select -ExpandProperty name

使用這一行(注意別名擴展):

ForEach-Object {Get-Recipient $_} | Where-Object {$_.RecipientType -like "*Group"}

使用前徹底測試。


此外,我強烈建議不要以這種方式以程式方式更新組範圍 - 其他設置可能沒問題。更改這麼多範圍的組範圍的問題是,您不可避免地會遇到將全域組的範圍更改為通用組的情況,但由於它是另一個全域組的成員(不能有通用組作為成員)。

引用自:https://serverfault.com/questions/987434