lima-city: Webhosting, Domains und Cloud
0 Pluspunkte 0 Minuspunkte

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?

von  

1 Antwort

1 Pluspunkt 0 Minuspunkte

Du kannst es mit einem -Force versuchen.

$folders = Get-ChildItem -Path $path -Recurse -Directory -Force -ErrorAction SilentlyContinue
$folders += Get-Item -Path $path -Force
von (574 Punkte)