我想创建一个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上没有获得全部成功。
我无法在剧本中找到问题......
答案 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”组中。然后它没有将他添加到邮箱,因为该组被排除在外。