首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用PowerShell集应用ACL权限-Acl

使用PowerShell集应用ACL权限-Acl
EN

Stack Overflow用户
提问于 2017-03-24 18:43:01
回答 2查看 22.8K关注 0票数 8
代码语言:javascript
复制
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

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

有没有人能帮助解释为什么会这样?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-24 19:46:10

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

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

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

代码语言:javascript
复制
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。如果您使用它们并定义继承行为,则权限将显示为普通权限。

票数 5
EN

Stack Overflow用户

发布于 2019-05-18 22:56:03

今天我试图编译ILSpy,遇到了AL1078: Error signing assembly,这是一个权限问题。显示了答案的融合。

此powershell脚本将$CurUsr分配给当前登录用户的令牌,并将$CurTgt指定为要更改其权限的文件夹。根据需要更改它们。

添加权限:

代码语言:javascript
复制
$CurTgt = "C:\Users\All Users\Microsoft\Crypto\RSA\MachineKeys"
$CurUsr = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name
$acl = Get-Acl $CurTgt
$AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule($CurUsr,"FullControl","ContainerInherit,ObjectInherit","None","Allow")
$acl.SetAccessRule($AccessRule)
$acl | Set-Acl $CurTgt

删除权限:

代码语言:javascript
复制
$CurTgt = "C:\Users\All Users\Microsoft\Crypto\RSA\MachineKeys"
$CurUsr = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name
$acl = Get-Acl $CurTgt
$usersid = New-Object System.Security.Principal.Ntaccount ($CurUsr)
$acl.PurgeAccessRules($usersid)
$acl | Set-Acl $CurTgt

参考文献:

Manage ACLs Inheritance Current User

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42997396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档