PowerShell » Gotowce

Wyświetlenie uprawnień do podkatalogów danego katalogu

  • 1 komentarz
  • 1498 odsłon
  • Oceń ten tekst jako pierwszy
Aby wyświetlić (ale bezproblemowo można zmienić to polecenie, by zmienić) uprawnienia systemu plików NTFS dla danego katalogu oraz jego podkatalogów (rekursywnie) wystarczy zastosować odpowiednio cmdlety Get-ChildItem, Where-Object i Foreach-Object oraz konsolowe narzędzie cacls.exe, służące do zarządzania listami uprawnień ACL.

Get-ChildItem posiada parametr -recurse, który zapewni przetwarzanie rekursywne, następnie wynik działania tego cmdletu wystarczy przekierować do Where-Object filtrując obiekty, które są katalogami, a następnie z użyciem Foreach-Object wystarczy wykonać na nich odpowiednie polecenie. Używamy narzędzia cacls.exe, które po podaniu w parametrze ścieżki do pliku bez innych parametrów spowoduje wyświetlenie list kontroli dostępu danego pliku.

Ostateczna wersja tego jednolinijkowego skryptu wygląda tak:
Get-ChildItem -recurse "katalog" | Where-Object { $_.Attributes -eq "Directory" } | Foreach-Object { cacls $_.FullName }


Warto zwrócić uwagę, że nie wystarczy zastosowanie właściwości Name aktualnie przetwarzanego obiektu w przekazaniu nazwy do cacls.exe (lub dowolnego innego narzędzia), trzeba zastosować właściwość FullName obiektu obecnego ($_).

Oczywiście cacls.exe może być też używany do zmiany praw dostępu do danego obiektu.

1 komentarz

Brak avatara
Bartek 2014-04-29 22:17

A jak to zrobić by wyświetlał tylko te katalogi do których dostęp ma wybrany użytkownik?
np. w podkatalogu D:\test jest 100 katalogów od 1 do 100 z czego tylko do 3 dostęp ma kowalski będący częścią domeny firma (logwanie firma\kowalski)