Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell脚本正在向文件夹ACL添加用户,但未应用权限_Powershell - Fatal编程技术网

Powershell脚本正在向文件夹ACL添加用户,但未应用权限

Powershell脚本正在向文件夹ACL添加用户,但未应用权限,powershell,Powershell,我正在编写一个脚本,将用户添加到具有特定权限的文件夹ACL。下面的代码将用户添加到ACL,但它不授予读取权限。变量$User\u Name就是定义我希望具有读取权限的用户的变量。这方面的任何帮助都会很好 $ACL = Get-ACL -Path c:\test $AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule($User_Name,"Read","Allow&qu

我正在编写一个脚本,将用户添加到具有特定权限的文件夹ACL。下面的代码将用户添加到ACL,但它不授予读取权限。变量$User\u Name就是定义我希望具有读取权限的用户的变量。这方面的任何帮助都会很好

$ACL = Get-ACL -Path c:\test
$AccessRule = New-Object 
System.Security.AccessControl.FileSystemAccessRule($User_Name,"Read","Allow")
$ACL.SetAccessRule($AccessRule)
$ACL | Set-Acl -Path c:\test

很难说哪里出了问题。
这可能与您在
新对象

之后添加的额外换行有关 或者
$User\u Name
中的标识引用(即
域\用户名
?),
或者,正如我所怀疑的,这可能是因为您没有在新的访问规则上为继承和传播指定值

尝试:

见:和

注意:对于管理,最好对组而不是单个用户设置文件权限。这使它更容易维护


注意:

您可能更喜欢
SetAccessRule()
,而不是
AddAccessRule()

AddAccessRule()
此方法将此访问规则添加到ACL。
如果用户具有修改权限,并且我们使用AddAccessRule()创建具有读取权限的新规则,则用户仍将具有修改权限

SetAccessRule()
此方法删除任何现有访问,并用指定的规则替换该访问。

如果用户具有修改权限,并且使用SetAccessRule()指定读取权限创建了新规则,则该用户现在将仅具有读取权限。

我们尚未收到您的消息。。我的回答解决了你的问题吗?如果是,请点击✓ 左边的图标。这将帮助其他有类似问题的人更容易地找到它,并有助于激励其他人回答你将来可能遇到的任何问题。
    $folder = 'C:\test'
    # create a new access rule
    # see: https://docs.microsoft.com/en-us/dotnet/api/system.security.accesscontrol.filesystemaccessrule
    $rule = [System.Security.AccessControl.FileSystemAccessRule]::new($User_Name, "Read", "None,ObjectInherit", "None", "Allow")

    # get the current ACL of the folder
    $acl = Get-Acl -Path $folder
    # add the new rule to the ACL
    $acl.AddAccessRule($rule)
    $acl | Set-Acl $folder