powershell - 使用 PowerShell Set-Acl 应用 ACL 权限

标签 powershell acl

New-Item -Type Directory -Path "C:\MyFolder"
$Acl = Get-Acl "C:\MyFolder"
$Ar = New-Object System.Security.AccessControl.FileSystemAccessRule("username", "FullControl", "Allow")
$Acl.SetAccessRule($Ar)
Set-Acl -Path "C:\MyFolder" -AclObject $Acl

嗨,当我得到上面的代码并使用我自己的设置应用它时 - 为文件夹添加了用户帐户条目,但是没有应用权限(没有勾选)

任何人都可以帮助解释为什么会这样吗?

谢谢

最佳答案

您的评论描述了以下行为:

您的 PowerShell 脚本成功,但如果您使用资源管理器属性对话框检查权限,您将看到以下内容:

permissions with unfilled checkboxes

这非常令人困惑,因为 PowerShell 查询将确认:

PS> Get-Acl .|fl


Path   : Microsoft.PowerShell.Core\FileSystem::D:\temp\myfolder
Owner  : clijsters\clijsters
Group  : clijsters\Kein
Access : clijsters\NEWUSER Allow  FullControl
        VORDEFINIERT\Administratoren Allow  FullControl
        VORDEFINIERT\Administratoren Allow  268435456
        NT-AUTORITÄT\SYSTEM Allow  FullControl
        [...]

您的 ACL 已更改。如果您向下滚动复选框列表,您会注意到,“特殊权限”已被选中,如果您单击“高级”,您会注意到,您的权限已设置。

编辑:
正如@AnsgarWiechers 所提到的,我错过了描述为什么使用 New-Object System.Security.AccessControl.FileSystemAccessRule("username", "FullControl", "Allow") 添加的权限被列为特殊权限的部分。

就像 MSDN 上描述的那样, FileSystemAccessRule 有 4 个构造函数,其中一些接受 InheritanceFlagsPropagationFlags(例如 this one 适合您的需要)。如果您使用它们并定义继承行为,则权限将显示为正常权限。

关于powershell - 使用 PowerShell Set-Acl 应用 ACL 权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42997396/

相关文章:

string - PowerShell 字符串连接在函数内部和外部的行为不同

powershell - C#:New-SelfSignedCertificate Powershell cmdlet在使用新的应用程序域时不起作用

powershell - 将目录内容作为一行传递到Powershell中的可执行文件

powershell - 如何通过 Add-AzureAccount 使用 Microsoft(非组织)帐户?

windows - Powershell-扩展存档和重命名文件,因为其中包含无效字符

laravel - 为什么我们需要 RBAC 许可?

PowerShell 设置 Acl 新对象 : Cannot find an overload for "FileSystemAccessRule" and the argument count: "4"

symfony - 如何在 Symfony2 中使用类范围的 ace?

node.js - RoleMapping.USER 或 RoleMapping.ROLE & ACL

python - 确定是否继承 ntfs 权限的可靠方法