我有一个脚本,用于将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"
}
}
答案 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系统,您将体验到为什么更好的原因