根据当前权限为多个用户设置日历权限

根据当前权限为多个用户设置日历权限

我需要一些帮助来处理我编写的脚本,我在让它正常工作而不给出错误或警告消息时遇到了一些麻烦。

到目前为止,我有这样的逻辑,即将每个人日历的“审阅者”权限分别授予特定的启用邮件的 AD 安全组:

$users = Get-Mailbox | Select -ExpandProperty Alias;
Foreach ($user in $users) {Add-MailboxFolderPermission $user":\Calendar" -user *GROUP1* -accessrights Reviewer};

这很好,但是我们经常创建和删除用户帐户,所以我需要让脚本尽可能经济地运行。上面的逻辑将检查每个已经拥有权限集的用户并给出错误,这可能需要一段时间,并且会在错误日志中添加很多内容。

我想要的是一个IF语句或对Select property脚本的修改,可以检查用户当前是否没有设置对安全组的权限,然后添加权限,所以如果他们已经设置了权限,它就会跳过。

像这样:

$users = Get-Mailbox | Select -ExpandProperty Alias;
$users2 = Get-MailboxFolderPermission -Identity $users:\Calendar -User *GROUP1* IF accessrights = NULL** ???;
Foreach ($user in **$users2**) {Add-MailboxFolderPermission $user":\Calendar" -user *GROUP1* -accessrights Reviewer};

答案1

这是一种使用一些条件性 PowerShell 逻辑以及一些数组、循环和变量的方法,仅Add-MailboxFolderPermission在“组名”尚未具有访问权限时运行命令。我还提供了一些支持资源,以便进一步了解逻辑的组成部分。

$gName = "GROUP1";
$accounts = (Get-Mailbox | Select -ExpandProperty Alias);

$accounts | % {
    $a = $_;
    $z = (Get-MailboxFolderPermission -Identity $a":\Calendar");
    $y = ($z | %{$_.User.DisplayName});
    If($y -notcontains $gName){Add-MailboxFolderPermission $a":\Calendar" -user $gName -accessrights Reviewer};
    };

支持资源

相关内容