我需要一些帮助来处理我编写的脚本,我在让它正常工作而不给出错误或警告消息时遇到了一些麻烦。
到目前为止,我有这样的逻辑,即将每个人日历的“审阅者”权限分别授予特定的启用邮件的 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};
};
支持资源
- ForEach 对象
标准别名对于 Foreach 对象:'
%
' 符号,ForEach - 如果
- 比较运算符
- 数组