Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.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向windows server中的文件夹添加用户权限_Powershell_Permissions_Acl - Fatal编程技术网

powershell向windows server中的文件夹添加用户权限

powershell向windows server中的文件夹添加用户权限,powershell,permissions,acl,Powershell,Permissions,Acl,所以我得到了下一条路径:C:\folder1\folder2\fileName。查看C:\folder1上的安全选项卡,有Alice具有完全权限的用户名。但是转到C:\folder1\folder2\fileNameAlice还没有到。如何在C:\folder1中递归地插入powershell v2 Alice成员,以便根C:\folder1下的所有文件也具有相同的Alice用户名集和完全权限 我试过: $acl = Get-Acl C:\folder1 $permission = "doma

所以我得到了下一条路径:
C:\folder1\folder2\fileName
。查看C:\folder1上的安全选项卡,有Alice具有完全权限的用户名。但是转到C:\folder1\folder2\fileNameAlice还没有到。如何在C:\folder1中递归地插入powershell v2 Alice成员,以便根C:\folder1下的所有文件也具有相同的Alice用户名集和完全权限


我试过:

$acl = Get-Acl C:\folder1
$permission = "domain\Alice","FullControl","Allow"
$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule $permission
$acl.SetAccessRule($accessRule)
$acl | Set-Acl C:\folder1
但它似乎不适用于C:\folder1\folder1\fileName。我想我正在尝试为Alice应用权限,它在最后一个文件名项中还不存在。

正如您在文档中看到的,该类有一个用于继承的属性。 您必须将属性添加到
$properties

$permission = "domain\Alice", 
"FullControl",  
[System.Security.AccessControl.InheritanceFlags]"ContainerInherit", 
[system.security.accesscontrol.PropagationFlags]"None",
"Allow"
$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule $permission
正如您在文档中看到的,该类有一个用于继承的属性。 您必须将属性添加到
$properties

$permission = "domain\Alice", 
"FullControl",  
[System.Security.AccessControl.InheritanceFlags]"ContainerInherit", 
[system.security.accesscontrol.PropagationFlags]"None",
"Allow"
$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule $permission

您还可以通过使用
Get-ChildItems
cmdlet获取所有子项,并将它们传送到
Set-Acl
cmdlet来递归添加权限,就像在microsoft站点上的文档中的examle中所做的那样:。请参阅“示例3:将安全描述符应用于多个文件”或阅读以下内容(从页面复制):

这些命令将File0.txt文件中的安全描述符应用于C:\Temp目录及其所有子目录中的所有文本文件

第一个命令获取当前目录中File0.txt文件的安全描述符,并使用赋值运算符(=)将其存储在$NewACL变量中

管道中的第一个命令使用
Get ChildItem
cmdlet获取C:\Temp目录中的所有文本文件。Recurse参数将命令扩展到C:\temp的所有子目录。Include参数将检索的文件限制为扩展名为“.txt”的文件。Force参数获取隐藏的文件,否则这些文件将被排除。(不能使用“c:\temp*.txt”,因为
-Recurse
参数在目录上工作,而不是在文件上。)

管道操作符(|)将表示检索到的文件的对象发送到
Set Acl
cmdlet,该cmdlet将AclObject参数中的安全描述符应用于管道中的所有文件

实际上,最好将Whatif参数用于所有可能影响多个项目的Set Acl命令。在本例中,管道中的第二个命令是“
Set Acl-AclObject$NewAcl-WhatIf
”。此命令列出将受该命令影响的文件。查看结果后,可以在不使用
Whatif
参数的情况下再次运行该命令


这是一个使用“.txt”文件的示例,但也可以修改以应用于目录。

您还可以通过使用
Get ChildItems
cmdlet获取所有子项,并将它们传输到
Set Acl
cmdlet,就像在microsoft站点文档中的examle中所做的那样:递归地添加权限。请参阅“示例3:将安全描述符应用于多个文件”或阅读以下内容(从页面复制):

这些命令将File0.txt文件中的安全描述符应用于C:\Temp目录及其所有子目录中的所有文本文件

第一个命令获取当前目录中File0.txt文件的安全描述符,并使用赋值运算符(=)将其存储在$NewACL变量中

管道中的第一个命令使用
Get ChildItem
cmdlet获取C:\Temp目录中的所有文本文件。Recurse参数将命令扩展到C:\temp的所有子目录。Include参数将检索的文件限制为扩展名为“.txt”的文件。Force参数获取隐藏的文件,否则这些文件将被排除。(不能使用“c:\temp*.txt”,因为
-Recurse
参数在目录上工作,而不是在文件上。)

管道操作符(|)将表示检索到的文件的对象发送到
Set Acl
cmdlet,该cmdlet将AclObject参数中的安全描述符应用于管道中的所有文件

实际上,最好将Whatif参数用于所有可能影响多个项目的Set Acl命令。在本例中,管道中的第二个命令是“
Set Acl-AclObject$NewAcl-WhatIf
”。此命令列出将受该命令影响的文件。查看结果后,可以在不使用
Whatif
参数的情况下再次运行该命令


这是一个使用“.txt”文件的示例,但也可以修改以应用于目录。

出现问题。。。PS C:\>$accessRule=新对象System.Security.AccessControl.FileSystemAccessRule$权限新对象:找不到“FileSystemAccessRule”的重载,参数计数为:“4”。第1行字符:25+$accessRule=新对象已修复。根据需要调整SEFL的传播标志。出现问题。。。PS C:\>$accessRule=新对象System.Security.AccessControl.FileSystemAccessRule$权限新对象:找不到“FileSystemAccessRule”的重载,参数计数为:“4”。第1行字符:25+$accessRule=新对象已修复。根据需要调整SEFL的传播标志。