这是我的第一篇文章; 我对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 的帮助、提示或一般建议都会有所帮助。