Powershell: Naprawa dziedziczenia uprawnień z folderu nadrzędnego

21-lis-2013

W powershell trzeba nadać uprawnienie do katalogu. Niestety niektóre podkatalogi mają wyłączone dziedziczenie. W jaki sposób naprawić dziedziczenie uprawnień z folderów nadrzędnych, jak je zresetować? Oto propozycja:

Function FixInheritance([string] $Directory)
{
   $AllFiles = Get-ChildItem -Recurse -Force $Directory
   ForEach ($File in $AllFiles)
   {

      #Pobierz uprawnienia bieżącego pliku/folderu
      $acl = get-acl $File.FullName
      #Zmien ustawienia dziedziczenia
      $acl.SetAccessRuleProtection($false, $false);
      #Zapisz uprawnienia dla pliku
      set-acl -aclobject $acl $File.FullName
      #Kropka jako pasek postępu
      Write-Host "." -NoNewline
   }
   Write-Host
 }

Czyli najpierw listujesz rekurencyjnie wszystkie katalogi. Zapamiętujesz je w $AllFiles. Potem dla każdego z tych plików pobierasz jego uprawnienia, zmieniasz w nich sposób dziedziczenia uprawnień i zapisujesz je spowrotem do tego pliku. Żeby coś działo się na ekranie, wyświetlasz kropkę dla każdego pliku.

A oto wywołanie tej funkcji dla wszystkich podkatalogów i plików folderu c:\tmp

Clear
FixInheritance "C:\tmp\test"

Żródła:

http://blogs.msdn.com/b/adpowershell/archive/2009/10/22/view-configure-protected-acl-and-fixing-broken-inheritance.aspx

http://www.hanselman.com/blog/ProgressBarsInPowerShell.aspx

 

 

Komentarze są wyłączone

Autor: Rafał Kraik