1

好的,我在工作中有一个有趣的问题。我们正在将我们的用户、应用程序和共享存储迁移到一个完全不同的系统;但是 perms 是由本地组和域级别的全局组混合设置的。问题是本地组不能直接迁移过来,所以我必须使用一个全局组属于设备本地组的矩阵来更正这些权限。很简单,我有这个工作。

现在我遇到的问题是,用户可能拥有通过本地组授予的权限(例如读取和写入),然后是通过全局权限授予的一组单独的权限(例如修改和读取和执行)。所以我的解决方案是构建一个分配给二进制值的权限列表(即 1=Read、2=write、4=read 和 execute),然后给我一个值,我可以用它来执行二进制 OR 操作确保他们从各个组中获得应有的所有权利。

现在我的问题是,一旦我有了 ORed 二进制值,我如何将它用于现有列表来提取在 set-acl 调用中分配的个人权限?任何想法和指针都非常感谢。

4

1 回答 1

0

给定哈希表:

$permissions = @{read=1;write=2;readAndExecute=4}

以及二进制或运算的值:

$oredBinary = 7 # All permissions

你可以这样检查:

$permissions.GetEnumerator() | Where-Object { ($_.Value -band $oredBinary) -ne 0} | Select @{n='Permissions';e={$_.Name}}
于 2012-10-24T20:34:55.173 回答