仅处理文件夹权限不等于的邮箱

时间:2019-01-18 20:39:16

标签: powershell office365 exchange-server

我有一个脚本,用于将Exchange Online中的所有邮箱日历权限设置为-User Default,对于PublishingEditor,它可以正常工作。

但是我似乎无法使其正常运行,因此它仅处理权限不等于PublishingEditor的邮箱。

它仍然遍历所有邮箱,即使它们已经设置。

我尝试使用以下代码。

$allmailbox = Get-Mailbox -Resultsize Unlimited

Foreach ($Mailbox in $allmailbox)
{
    $path = $Mailbox.alias + ":\" + (Get-MailboxFolderStatistics $Mailbox.alias | Where-Object { $_.Foldertype -eq "Calendar" } | Select-Object -First 1).Name

    If ($path.AccessRights -ne "PublishingEditor") {
        Set-Mailboxfolderpermission -identity $path -user Default -accessrights PublishingEditor
        Write-Host 'Done'
    }
    ElseIf($path.AccessRights -eq "PublishingEditor") {
        Write-Host "ALREADY DONE"
    }    
}

1 个答案:

答案 0 :(得分:0)

在我为此编写的代码下面。它适用于我的系统。

foreach ($mbx in Get-Mailbox -ResultSize unlimited) {
  Get-MailboxFolderStatistics -Identity $mbx | Where-Object {$_.FolderType -eq 'Calendar'} | ForEach-Object {
    $path = "$($MBX.Alias):$($_.Folderpath)".Replace('/','\')
    $DefaultPermission = Get-MailboxFolderPermission -Identity $path -User Default
    if ($DefaultPermission.AccessRights -notcontains 'PublishingEditor') {
      Set-MailboxFolderPermission -Identity $path -AccessRights PublishingEditor -User Default
    }
    else {
      Write-Host 'Already Done'
    }
  }
}

不是将所有邮箱对象首先分配给变量,而是将foreach语句与其中的Get-Mailbox一起使用。一旦您开始管理具有成千上万个邮箱的Exchange系统,您将体验到为什么更好的原因