Ich versuche mit diesem Powershell Skript alle explizit gesetzten Berechtigungen auf einem Windows Fileserver zu entfernen.
$path = "D:\Shares\Testshare"
$user = "DOMAIN\User"
# Hauptordner + alle Unterordner holen
$folders = Get-ChildItem -Path $path -Recurse -Directory
$folders += Get-Item -Path $path # auch den Hauptordner einbeziehen
foreach ($folder in $folders) {
$acl = Get-Acl $folder.FullName
$matches = $acl.Access | Where-Object {
$_.IdentityReference -eq $user -and $_.IsInherited -eq $false
}
if ($matches) {
Write-Host "Bearbeite Ordner: $($folder.FullName)" -ForegroundColor Cyan
foreach ($match in $matches) {
Write-Host " Entferne: $($match.FileSystemRights) ($($match.AccessControlType))"
$acl.RemoveAccessRule($match) | Out-Null
}
try {
Set-Acl -Path $folder.FullName -AclObject $acl
Write-Host " ? Rechte erfolgreich entfernt" -ForegroundColor Green
} catch {
Write-Host " ? Fehler beim Setzen der ACL: $_" -ForegroundColor Red
}
}
}
Es scheint aber das versteckte Dateien (bzw Systemdateien) wie z.B .git oder .vs und alles was darin ist nicht bearbeitet wird. Wie kann ich machen das die Berechtigung auf wirklich allen Ordnern gesetzt werden?