web-dev-qa-db-ja.com

権限として送信するADセキュリティグループを持つすべてのメールボックスを取得するにはどうすればよいですか

「SendAs」アクセス許可が割り当てられたADセキュリティグループを持つすべての共有メールボックスを検索するためのPowerShellコマンドを見つけるための支援が必要です。テキストファイルに。

私がこれまでに持っているスクリプトは次のとおりです。

$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
WoodMadeIT

ActiveDirectoryモジュールにアクセスできない場合( 他のフォーラムのスレッドに記載されているように )、目的を達成するには、Exchange管理シェルで利用可能なツール(またはその暗黙のリモーティングと同等)。

具体的には、スクリプトの次の行を置き換えます。

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

この行で(エイリアス拡張に注意してください):

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

使用前に十分にテストしてください。


また、に対してこの方法でグループスコープをプログラムで更新することを強くお勧めします-他の設定はおそらく問題ありません。非常に多くのスコープのグループスコープを変更する際の問題は、必然的に、グローバルグループのスコープをユニバーサルグループに変更する状況に遭遇することですが、別のグローバルグループのメンバーであるために失敗します(メンバーとしてのユニバーサルグループ)。

1
Semicolon