2017-01-16 51 views
0

我需要一些幫助,我的Powershell腳本。 我的客戶有一個巨大的目錄,我需要更改安全設置。設置文件夾,子文件夾和文件權限集-ACP 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 但該文件的權限filepermission直接IST沒有設置爲什麼?

回答