从AD组中提取用户并将其添加到邮箱

时间:2017-03-03 10:16:15

标签: powershell active-directory exchange-management-shell

我想创建一个PowerShell脚本来提取AD组并将成员添加到特定邮箱。在该组中是一个我不想提取的组(doNotExtract)。这就是我到目前为止所做的:

Import-Module ActiveDirectory
$csv = @"
Mailbox,GroupName
Mailbox1,Group1
"@ | ConvertFrom-Csv

$ExcludedUsers = Get-ADGroupMember -Identity "doNotExtract" -Recursive | Select-Object -ExpandProperty SamAccountName

$csv | ForEach-Object {
    $mailbox = $_.Mailbox

    Get-ADGroupMember -Identity $_.GroupName -Recursive |

    Where-Object { ($ExcludedUsers -notcontains $_.SamAccountName) -and ($_.objectclass -eq 'user') } |
    ForEach-Object {
        Add-MailboxPermission -Identity $mailbox -User $_.SamAccountName -AccessRights FullAccess -InheritanceType All
    }
}

在AD组中有以下对象:

doNotExtract
User1
User2

然后我在Exchange管理shell中启动脚本。但是它只添加了User1,而User2在Mailbox1上没有获得全部成功。

我无法在剧本中找到问题......

3 个答案:

答案 0 :(得分:1)

在这种情况下,错误是User2也在 : FOR ${a} IN RANGE 0 3 \ Input Text id=username @{EMAIL_LIST}[${a}] 组中。

答案 1 :(得分:0)

我对Exchange Online有经验,使用SamAccountName并不总能顺利运行。您是否尝试使用UserPrincipalName作为Add-MailboxPermission而不是SamAccountName的输入?

我还想知道为什么要提取AD组的成员并授予他们对邮箱的完全访问权限?为什么不让AD组自己完全访问邮箱?

答案 2 :(得分:0)

正如@ 4c74356b41所述,User2在“doNotExtract”组中。然后它没有将他添加到邮箱,因为该组被排除在外。