Powershell尝试将组应用于仅应用于此文件夹的文件夹

我和“ leosenko”有同样的问题。 我的脚本在下面;

$groupperm = @(
('(RW)',$readwrite,$inheritanceflag,$propagationflag),('(RO)',$readonly,('(LF)',$Listfolder,'None','None'))

foreach ($group in $groupperm){
        $grouptxt = "FS1-$groupname " + $group[0]
        $accessControlEntry = New-Object system.security.accessControl.FileSystemaccessRule @($grouptxt,$group[1],$group[2],$group[3],$type)
        $objACL.AddaccessRule($accessControlEntry)
        Set-ACL $folderpath $objACL
        $accessControlEntry
        }

这些组可以很好地应用于$ folderpath,但是最后一组上的“应用于”而不是其他“仅此文件夹”是“此文件夹,子文件夹和文件”。

如果我使用(Get-ACL $folderpath).access检查ACL 我得到

FileSystemRights  : Read,Synchronize
accessControlType : Allow
IdentityReference : MELTD\FS1-testing (LF)
IsInherited       : False
Inheritanceflags  : ContainerInherit,ObjectInherit
Propagationflags  : None

对于最后一组,但是运行脚本(对于最后一组)时$ accesscontrolentry的输出显示;

FileSystemRights  : Read,Synchronize
accessControlType : Allow
IdentityReference : FS1-testing (LF)
IsInherited       : False
Inheritanceflags  : None
Propagationflags  : None

任何人都可以帮我照亮吗?

预先感谢

保罗。

编辑...好吧,经过一些测试...如果我使用设置权限

icacls $folderpath /grant $grouptxt":(R)"

我获得了所需的“仅此文件夹”权限集,但是,如果我在脚本中包含该行,并且仅应用前两个权限,则同一行会将权限设置为“此文件夹,子文件夹和文件” 例如

$groupperm = @(
        ('(RW)',$propagationflag)        
        )
        $grouptxt = 'FS1-'+$groupname+' (LF)'
        icacls $folderpath /grant $grouptxt":(R)"

        foreach ($group in $groupperm){
            $grouptxt = "FS1-$groupname " + $group[0]
            $accessControlEntry = New-Object system.security.accessControl.FileSystemaccessRule @($grouptxt,$type)
            $objACL.AddaccessRule($accessControlEntry)
            Set-ACL $folderpath $objACL
            $accessControlEntry
            }

有些东西坏了!

benbenmail 回答:Powershell尝试将组应用于仅应用于此文件夹的文件夹

尝试将InheritanceFlags设置为仅ObjectInherit

[更新]

我想我通过以下内容得到了您想要的,

$ACL = Get-Acl "C:\test"

$Rule = New-Object System.Security.AccessControl.FileSystemAccessRule("Users","FullControl","ObjectInherit,ContainerInherit","None","Allow")
$ACL.RemoveAccessRule($Rule)
Set-ACL $ACL.Path $ACL

$Rule = New-Object System.Security.AccessControl.FileSystemAccessRule("Users","Allow")
$ACL.AddAccessRule($Rule)
Set-ACL $ACL.Path $ACL

如您所见,我必须先删除现有规则,然后在第二条规则中更改InheritanceFlag,才能更改“应用于”列中显示的内容。

ObjectInherit,ContainerInherit =此文件夹,子文件夹和文件
ObjectInherit =此文件夹和文件
ContainerInherit =该文件夹和子文件夹
无=仅此文件夹

我只是玩得很​​快,在Powershell或任何编程方面我都不太好,所以我希望这会有所帮助。

本文链接:https://www.f2er.com/3167879.html

大家都在问