【问题标题】:Set Folder, Subfolder and File Permission Set-ACL Powershell Script. Setting File Inherititance does not work设置文件夹、子文件夹和文件权限设置-ACL Powershell 脚本。设置文件继承不起作用
【发布时间】:2017-05-31 13:06:59
【问题描述】:

我需要一些有关我的 Powershell 脚本的帮助。 我的客户有一个巨大的目录,我需要更改安全设置。

我在下面编写了这段代码,它可以工作,但我遇到了一个问题: 文件的继承不起作用,因此没有设置目录中任何文件的安全权限。

也许有人会发现我的错误。

XML 文件:

<?xml version="1.0" encoding="utf-8"?>
<Pfade>
    <pfad name="E:\Share\TEST">
        <gruppe name="Domain Admins">
            <rechte>FullControl</rechte>
            <aktion>allow</aktion>
            <rechtsetzen>Add</rechtsetzen>
        </gruppe>
        <gruppe name="gruppe1">
            <rechte>Modify</rechte>
            <aktion>allow</aktion>
            <rechtsetzen>Add</rechtsetzen>
        </gruppe>
        <gruppe name="gruppe2">
            <rechte>Modify</rechte>
            <aktion>allow</aktion>
            <rechtsetzen>Add</rechtsetzen>
        </gruppe>
        <gruppe name="gruppe3">
            <rechte>Modify</rechte>
            <aktion>allow</aktion>
            <rechtsetzen>Add</rechtsetzen>
        </gruppe>
        <gruppe name="gruppe4">
            <rechte>Modify</rechte>
            <aktion>allow</aktion>
            <rechtsetzen>Add</rechtsetzen>
        </gruppe>
        <gruppe name="gruppe5">
            <rechte>Modify</rechte>
            <aktion>allow</aktion>
            <rechtsetzen>Add</rechtsetzen>
        </gruppe>
        <gruppe name="SYSTEM">
            <rechte>FullControl</rechte>
            <aktion>allow</aktion>
            <rechtsetzen>Add</rechtsetzen>
        </gruppe>
    </pfad>
</Pfade>

PowerShell:

    Set-ExecutionPolicy -ExecutionPolicy Unrestricted
$scriptpath = $MyInvocation.MyCommand.Path
$dir = Split-Path $scriptpath
cd $dir
# Einlesen des XML-Dokuments im aktuellen Skriptpfad (!)
$doc = [XML](Get-Content -Path struktur.xml)

#### Start TAKEOWN
$Remotesystem = "\\server1"
$Adminuser = "domain\admin"
$yes = "Y"
$log = "c:\Users\admin\Desktop\log.txt"


psexec $Remotesystem 
TAKEOWN /S $Remotesystem /F $doc.Pfade.pfad.name /D $yes /R >> $log
#### End TAKEOWN

$inherit = [system.security.accesscontrol.InheritanceFlags]"ContainerInherit, ObjectInherit"
$propagation = [system.security.accesscontrol.PropagationFlags]"None"

$doc.Pfade.pfad | ForEach-Object {
    $FolderName = $_.name
    $_.gruppe | ForEach-Object {
        $pathrecht  = $_.rechte
        $pathaktion = $_.aktion
        $pathrechts = $_.rechtsetzen
        $pathgruppe = $_.name
        $acl = Get-Acl $FolderName
        $acl.SetAccessRuleProtection($True, $False)
        $rule = New-Object System.Security.AccessControl.FileSystemAccessRule($pathgruppe, $pathrecht, $inherit, $propagation, $pathaktion)
        switch ($pathrechts) {
        Add {$acl.AddAccessRule($rule)}
        Delete {$acl.RemoveAccessRuleAll($rule)}
        }
        Set-Acl $FolderName $acl
        echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">>log.txt
        $date = Get-Date -format dd.MM.yyyy-HH:mm:ss
        $date>>log.txt
        Get-Acl $FolderName | select Path, Owner, Group, AccessToString | Format-List >>log.txt
        echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">>log.txt
    }
}
    echo "########################################################################################">>log.txt
    echo "########################################################################################">>log.txt
    echo "########################################################################################">>log.txt
cd $dir

文件夹和子文件夹的权限正是我想要的subfolderpermisson 但是文件filepermissiondirect 的权限没有设置为什么?

【问题讨论】:

    标签: xml powershell file-permissions psexec cmdlets


    【解决方案1】:

    我终于明白了。 Protectet 因我的错而出现的文件:

    $acl.SetAccessRuleProtection($True, $False)
    

    我需要将 SetAccessRuleProtection 更改为:

    $acl.SetAccessRuleProtection($False, $True)
    

    感谢 thudbutt Explain for beginners the ACL object property "SetAccessRuleProtection" in PowerShell with examples

    【讨论】:

      猜你喜欢
      • 2023-03-28
      • 2013-12-22
      • 2014-09-28
      • 1970-01-01
      • 2023-03-21
      • 2015-10-18
      • 2013-09-09
      • 1970-01-01
      • 2017-10-05
      相关资源
      最近更新 更多