powershell - 如何为同一文件夹授予多个用户/组 acl 权限?
问题描述
所以我有一个文件夹结构脚本,它可以从 Excel 列表中创建具有权限的文件夹。在该列表中有特定权限的列,在这些列中我想写下我想授予权限的用户名。脚本被编程为在 Excel 文件中逐行运行。话虽如此,我希望将用户名写在一行上。现在,当我写一个名字时它可以工作,但有多个名字却不行,我已经将整个单元格转换为数组,尝试使用 foreach 循环。还是不行。这是脚本的那一部分:
$acl = Get-Acl $homedir
$FileSystemRights = [System.Security.AccessControl.FileSystemRights]"Modify"
$AccessControlType = [System.Security.AccessControl.AccessControlType]::Allow
$InheritanceFlags = [System.Security.AccessControl.InheritanceFlags]"ContainerInherit, ObjectInherit"
$PropagationFlags = [System.Security.AccessControl.PropagationFlags]"None"
$AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule ($users, $FileSystemRights, $InheritanceFlags, $PropagationFlags, $AccessControlType)
$acl.AddAccessRule($AccessRule)
所以$users
这是用户名所在的excel单元格,它们看起来像这样
user1,user2
现在 foreach 循环是一个很好的解决方案,但不知何故它不起作用并且总是给出"Cannot convert value "user1" to type "System.Int32". Error: "Input string was not in a correct format"
可以有人告诉我我在这里做错了什么吗?
解决方案
谢谢大家,怀疑论者的建议似乎解决了这个问题。必须使用 foreach-object 循环而不是 foreach 循环。工作代码:
$users | ForEach-Object{
$acl = Get-Acl $homedir
$FileSystemRights = [System.Security.AccessControl.FileSystemRights]"Fullcontrol"
$AccessControlType = [System.Security.AccessControl.AccessControlType]::Allow
$InheritanceFlags = [System.Security.AccessControl.InheritanceFlags]"ContainerInherit, ObjectInherit"
$PropagationFlags = [System.Security.AccessControl.PropagationFlags]"None"
$AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule ($_, $FileSystemRights, $InheritanceFlags, $PropagationFlags, $AccessControlType)
$acl.setAccessRule($AccessRule)
$acl | Set-Acl "$homedir"
}
推荐阅读
- php - 如果产品只有 1 张图片可用,则不要在 Woocommerce 产品页面上显示缩略图行
- html - 在 Bootstrap 轮播幻灯片中居中(水平)内容
- javascript - flexbox - 悬停不适用于 flex-item
- amazon-web-services - 有没有办法重命名 cloudformation 堆栈名称?
- javascript - Angular devextreme
- kubernetes - kubernetes 使用 subpath 和 hostPath 目录或创建,但无法创建目录
- c++ - 检查子进程是否处于活动状态(Windows、C++)
- reactjs - 基于动态表单值的 GraphQL 变异 (React/Apollo/Magento)
- paypal - 适用于 Android 的 Chrome 上的 PayPal HOSTED_FIELDS_TIMEOUT
- vue.js - 使用自定义默认模板创建 Vue 项目