Powershell添加域用户对文件的ntfs权限

Powershell add domain user to ntfs permission to a file

我正在尝试编写一个脚本,其中一部分从文件中获取 ACL 并添加特定用户 ntfs 修改权限:

$identity = "$domain$adname" #In this example $domain='muzi.local $adname='puzi'
$rights = 'Modify'
$inheritance = 'ContainerInherit, ObjectInherit'
$propagation = 'None'
$type = 'Allow'

$Acl = Get-Acl -Path "$bucketdir$_" #for this example c:\bla.txt
$Acl.AddAccessRule($ACE) #this is where the error output.

Set-Acl -Path "$bucketdir$_" -AclObject $Acl #code would not get here


错误输出: 使用“1”个参数调用“AddAccessRule”时出现异常:“无法设置标志。 参数名称:inheritanceFlags” 在 C:\Step2.ps1:26 char:3

看起来参数没有传递给函数,但如果我将它们一个一个地输出,它看起来很好

我认为您只是忘记了创建新的访问规则,而且,由于您更改的是文件的 ACL,而不是目录,因此您应该使用只有 3 个参数的新规则的构造函数,因为文件没有子对象来传播或继承访问权限:

$identity    = "$domain$adname" #In this example $domain='muzi.local $adname='puzi'
$rights      = 'Modify'
$type        = 'Allow'
# these do not apply for a File (it has no child objects)
# $inheritance = 'ContainerInherit, ObjectInherit'
# $propagation = 'None'

$file = "$bucketdir$_" #for this example c:\bla.txt

# create the new AccessRule
$rule = [System.Security.AccessControl.FileSystemAccessRule]::new($identity, $rights, $type)

$Acl = Get-Acl -Path $file
$Acl.AddAccessRule($rule)
Set-Acl -Path $file -ACLObject $Acl