#######################################
# Skrypt PowerShella
# (C) dr Holger Schwichtenberg
########################################

# Zmiana ACL: Usuwanie wpisów kontroli dostępu przyznających prawo odczytu i zapisu("ReadAndExecute") 
# Parametry
$KATALOG = "h:\projekty"
$UŻYTKOWNIK = "itv\HS"
$Licznik = 0

# Dane początkowe
$acl = Get-Acl  $KATALOG
"Lista ACL przed:"
$acl | format-list

# Pobieranie ACL 
$acl = Get-Acl h:\projekty 

# Pobieranie wpisów ACE
$aces =$acl.GetAccessRules($true, $true, [System.Security.Principal.NTAccount])

# Iterowanie ACE
foreach ($ace in $aces)
{
Write-host $ace.IdentityReference.ToString() " - " $ACE.FileSystemRights $ACE.AccessControlType " odziedziczone?"  $ACE.IsInherited 
# Selektywne usuwanie
if ($ace.FileSystemRights.ToString() -match "ReadAndExecute") 
 {
  "...usuwanie..."
  $Wynik = $acl.RemoveAccessRule($ace)
if ($Wynik) { echo "Wpis ACE usunięty!"; $Licznik++ }
 }
}

# Zapisywanie ACL 
set-acl -AclObject $ACL -Path $KATALOG

echo ($Licznik.ToString() + " wpisów ACE usunięto!")

# Dane końcowe
$acl = Get-Acl  $KATALOG
"Lista ACL po:"
$acl | format-list
