Get-Acl

Pobiera listę kontroli dostępu (ACL) pliku, folderu lub klucza.

Get-Acl to cmdlet PowerShella (z modułu Microsoft.PowerShell.Security, który pokazuje listę kontroli dostępu (ACL) dla pliku, folderu albo klucza rejestru. Mówiąc po ludzku: dowiesz się, kto ma prawo czytać, zapisywać czy usuwać dany obiekt i jakie dokładnie uprawnienia (NTFS) zostały przypisane. To pierwsza rzecz, po którą sięgasz, gdy ktoś krzyczy „nie mam dostępu do udziału” albo gdy chcesz zrobić audyt uprawnień bez klikania w okienka Właściwości.

Składnia i najważniejsze opcje

Podstawowa składnia: Get-Acl [-Path]

  • -Path — ścieżka do obiektu (plik, folder, klucz rejestru). Akceptuje symbole wieloznaczne i wartości z potoku.
  • -LiteralPath — ścieżka traktowana dosłownie, bez interpretacji znaków jak * czy [ ]. Ratunek, gdy w nazwie masz nawiasy kwadratowe.
  • -Audit — pobiera też reguły audytu (SACL), nie tylko zwykłe uprawnienia. Wymaga uprawnień administratora (SeSecurityPrivilege).
  • -AllCentralAccessPolicies — pokazuje wszystkie Centralne Zasady Dostępu obowiązujące obiekt (Windows Server). Nie działa na Nano Server / OneCore.
  • -Filter — filtr dostawcy (np. dla systemu plików), zawęża obiekty po wzorcu.
  • -Include / -Exclude — dołącza lub pomija elementy wg wzorca; działa sensownie razem z -Path zakończonym \*.

Przykłady użycia

  • Get-Acl -Path C:\Dane\raport.txt — wyświetla właściciela i podstawowe uprawnienia pojedynczego pliku.
  • Get-Acl C:\Udzialy\HR | Format-List — pełny widok ACL folderu jako czytelna lista, a nie ucięta tabela.
  • (Get-Acl C:\Udzialy\HR).Access — wyłuskuje samą tablicę reguł dostępu (kto, jakie prawa, dziedziczenie).
  • Get-Acl -Path HKLM:\SOFTWARE\Microsoft — czyta uprawnienia klucza rejestru, bo Get-Acl rozumie też dysk HKLM:.
  • Get-Acl C:\Logi -Audit — dorzuca reguły audytu (SACL); uruchom jako administrator, inaczej tej sekcji nie zobaczysz.

Częste błędy i pułapki

Najczęstszy zgrzyt: domyślny wydruk pokazuje tylko Owner i skrócony Access. Jeśli chcesz wszystko, użyj Format-List albo sięgnij po właściwość .Access — pełne dane tam siedzą, po prostu nie mieszczą się w tabeli. Druga pułapka to -Audit bez podniesionych uprawnień: SACL wymaga praw administratora, więc bez nich dostaniesz pustkę albo błąd. Po trzecie pamiętaj, że Get-Acl jest tylko do odczytu — modyfikujesz uprawnienia przez Set-Acl, a typowy schemat to „pobierz obiekt, zmień regułę, zapisz z powrotem”. Uważaj też na ścieżki z nawiasami kwadratowymi (np. C:\Dane[2024]) — tu ratuje -LiteralPath, bo -Path potraktuje nawiasy jako wzorzec i nic nie znajdzie. I drobiazg: to cmdlet wyłącznie Windows — na Linuksie/macOS w PowerShellu go nie ma.

Powiązane komendy: Set-Acl (zapis uprawnień), Get-Item i Get-ChildItem (przekazywanie obiektów do potoku), icacls i takeown (klasyczne narzędzia wiersza poleceń), a także Get-Acl ... | Select-Object -ExpandProperty Owner do szybkiego sprawdzenia właściciela.