Uzyskaj uprawnienia do plików lub folderów za pomocą PowerShell

Ccmdlet Get-Acl w module Security PowerShella (Microsoft.PowerShell.Security) wykonuje świetną robotę przy uzyskiwaniu uprawnień do plików lub folderów (aka lista kontroli dostępu lub ACL). Ale uzyskanie użytecznych informacji z domyślnego wyjścia może wymagać przyzwyczajenia się.

W zamian, byłoby świetnie móc po prostu zobaczyć, co wyświetla zakładka Security pliku, folderu lub innego zasobu, ale bez konieczności przechodzenia przez interfejs Eksploratora plików i wielokrotnego klikania.


Figura 1: Zakładka Security folderu w Eksploratorze Windows

One-liner: Uzyskaj uprawnienia do pliku lub folderu

Oto one-liner, który dokładnie to robi:

(get-acl <nazwa folderu>).access | ft IdentityReference,FileSystemRights,AccessControlType,IsInherited,InheritanceFlags -auto

Wynik:

Funkcja Get-Permissions

Chcesz, aby wynik był bardziej czytelny? Oto funkcja PowerShell, która używa niestandardowych etykiet (tytułów w każdej kolumnie tabeli).

Możesz zapisać ją jako skrypt PowerShell lub dodać do swojego profilu PowerShell, aby była zawsze dostępna.

123456789
 function Get-Permissions ($folder) { (get-acl $folder).access | select `@{Label="Identity";Expression={$_.IdentityReference}}, `@{Label="Right";Expression={$_.FileSystemRights}}, `@{Label="Access";Expression={$_.AccessControlType}}, `@{Label="Inherited";Expression={$_.IsInherited}}, `@{Label="Inheritance Flags";Expression={$_.InheritanceFlags}}, `@{Label="Propagation Flags";Expression={$_.PropagationFlags}}. | ft -auto}

Możesz pominąć dwie właściwości związane z dziedziczeniem, jeśli nie potrzebujesz tych informacji.

Teraz można użyć polecenia Get-Permissions z nazwą folderu:

Get-Permissions c:myfolder

Wyjście:

Można również przekazać dane wyjściowe z poleceń dir, ls lub gci, z których wszystkie są aliasami PowerShell dla cmdleta Get-ChildItem.

dir <path> | % {Get-Permissions -path $_.fullname}

Funkcja do otwierania właściwości pliku lub folderu w Eksploratorze

Jeśli naprawdę chcesz zobaczyć uprawnienia w GUI Eksploratora plików, możesz użyć tej funkcji do otwarcia strony Właściwości > Ogólne pliku lub folderu. (Nie znalazłem sposobu, aby bezpośrednio otworzyć kartę Zabezpieczenia. Jeśli wiesz jak to zrobić, proszę podziel się w komentarzach do postu.).

12345678910111213141516171819202122
function Get-Properties ($path) {#exit if path not foundif (-not ($path | Test-Path)) { Write-Host "$path not found. Proszę podać poprawną ścieżkę do pliku lub folderu." -foregroundcolor red return } $o = new-object -com Shell.Application$item = get-item $path if ($item.gettype() -eq ) {write-host "Znaleziono folder $path.... Pobieranie właściwości"$fso = $o.Namespace("$path")$fso.self.InvokeVerb("properties") } if ($item.gettype() -eq ){write-host "Znaleziono plik $path.... Pobieranie właściwości"$fso = $o.Namespace($item.directoryname)$file = $fso.parsename($item.pschildname)$file.InvokeVerb("properties")}}

Teraz wystarczy użyć Get-Properties <Folder nazwy pliku>, aby szybko otworzyć stronę właściwości pliku lub folderu z poziomu powłoki.


Figura 2: Użyj funkcji Get-Properties, aby szybko otworzyć właściwości pliku lub folderu z PowerShella

File System Security PowerShell Module

Microsoft PFE Raimund Andrée opublikował jakiś czas temu File System Security PowerShell Module. Dodaje on kilka przydatnych cmdletów do zarządzania uprawnieniami systemu plików za pomocą PowerShell. Sprawdź również jego odpowiednie posty na blogu Weekend Scripter: Use PowerShell to Get, Add, and Remove NTFS Permissions oraz NTFSSecurity Tutorial 2 – Managing NTFS Inheritance and Using Privileges.

Tags
PowerShell Scripts Security Windows

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.