0

这是我的第一篇文章; 我对powershell很陌生。

应客户要求,我正在更改其 Exchange 365 中所有用户的日历访问权限。我使用Spiceworks上的代码将所有邮箱的默认设置为“审阅者” :

$users = get-mailbox
foreach ($user in $users) {set-mailboxfolderpermission -identity $($user.alias):\calendar" -User Default -AccessRights Reviewer  -confirm:$false}

而且我可以使用从上面编写的脚本从指定邮箱中删除所有其他用户的权限:

 $users = get-mailbox
    foreach ($user in $users) {Write-host -foregroundcolor green "Removing permission for $($user.alias)..."
    remove-mailboxfolderpermission -identity username:\calendar -user $user.alias -confirm:$false}

我希望锻炼如何在一个命令中从所有邮箱中删除所有显式权限以供将来使用;我认为它将涉及嵌套的 foreach 语句,但我正在努力使双循环正确。

它需要运行这样的东西:

$users = 获取邮箱

foreach $user {remove-mailboxfolderpermission -identity user1 .alias:\calendar -user $user1 .alias}

foreach $user {remove-mailboxfolderpermission -identity user1 .alias:\calendar -user $user2 .alias}

foreach $user {remove-mailboxfolderpermission -identity user1 .alias:\calendar -user $user3 .alias}

foreach $user {remove-mailboxfolderpermission -identity user1 .alias:\calendar -user $user4 .alias}

foreach $user {remove-mailboxfolderpermission -identity user2 .alias:\calendar -user $user1 .alias}

foreach $user {remove-mailboxfolderpermission -identity user2 .alias:\calendar -user $user2 .alias}

foreach $user {remove-mailboxfolderpermission -identity user2 .alias:\calendar -user $user3 .alias}

foreach $user {remove-mailboxfolderpermission -identity user2 .alias:\calendar -user $user4 .alias}

foreach $user {remove-mailboxfolderpermission -identity user3 .alias:\calendar -user $user1 .alias}

ETC

但它从同一个数组中提取 user.alias,所以在我的实验中,它要么运行一次(-identity 和 -user 的相同条目),要么因错误而失败或永远运行。

任何有关从同一来源提取嵌套 ForEach 的帮助、提示或一般建议都会有所帮助。

4

1 回答 1

0

为了嵌套“for”循环,您需要准备好信息或查找信息的方法,以便包装您的循环。

您不想在每个邮箱上都指定每个用户的别名,因此最好的方法是使用Get-MailboxFolderPermissioncmdlet。您的第一个循环,遍历每个用户,是正确的。您的第二个循环可能需要一些帮助,因为您不想手动输入每个具有权限的用户。您的代码最终应如下所示:

$users = Get-Mailbox
ForEach ($user in $users) {
  $perms = Get-MailboxFolderPermission -identity $user.alias:\Calendar | Format-List
  ForEach ($perm in $perms) {
    Remove-MailboxFolderPermission -identity $user.alias:\calendar -user $perm.user
  }
}

我没有交换环境来对此进行测试,但我认为这应该为您指明正确的方向,以便能够填写您的环境详细信息。

于 2018-05-21T19:09:11.177 回答