Berechtigungen für erstellte Dateien regelmäßig mit Powershell ändern

Berechtigungen für erstellte Dateien regelmäßig mit Powershell ändern

Ich habe ein bestimmtes Problem, das ich derzeit nicht selbst lösen kann. Mein Unternehmen hat einen öffentlichen Ordner, in dem Benutzer (andere Mitarbeiter) Dateien erstellen können. Das Problem besteht darin, dass dieser Ordner so konfiguriert werden muss, dass Benutzer am selben Tag Dateien in diesem Ordner erstellen können: Jeden Abend wird ein Skript ausgeführt, das alle neu erstellten Dateien in diesem Ordner (einschließlich aller Dateien in Unterordnern) schreibgeschützt macht. Dieser öffentliche Ordner befindet sich auf einem Windows 10-basierten Computer.

Ich habe es bereits geschafft, ein einfaches Powershell-Skript zu erhalten, mit dem alle Dateien im aktuellen Ordner schreibgeschützt sind:

$folderPath = 'C:\TestFolder' 
Get-ChildItem -Path $folderPath -Recurse -File | % { $_.IsReadOnly=$True }`

Dieses Powershell-Skript wird vom Administratorkonto ausgeführt. Das bedeutet, dass nach der täglichen Ausführung des Skripts nur der Administrator Dateien im Ordner bearbeiten kann, Benutzer jedoch nicht mehr. Am nächsten Tag können Benutzer neue Dateien erstellen, aber die aktuellen nicht mehr bearbeiten. Der Zyklus wiederholt sich jeden Tag: Neue Dateien werden ab dem nächsten Tag als schreibgeschützt „gesperrt“.

Hat jemand eine Idee, wie man diese Art von Dateiberechtigung in Powershell implementiert?

Meine eigene Idee eines Algorithmus für dieses Skript:

  • Alle Dateien rekursiv lokalisieren

  • Machen Sie sie schreibgeschützt

  • Entfernen Sie den Benutzerzugriff zum Ändern aller gefundenen Dateien

  • Behalten Sie den Zugriff der Benutzer auf das Erstellen neuer Dateien und das Anzeigen aktueller Dateien bei

    Jeder Ratschlag ist herzlich willkommen!

Antwort1

Sie können mit Powershell nur Dateien angeben, die älter als ein bestimmtes Datum sind, und zwar wie folgt:

Get-ChildItem -Path $folderPath -Recurse -File | 
    Where-Object CreationTime -lt (get-date).AddDays(-1) | 
    % { $_.IsReadOnly=$True }

Stellen Sie sicher, dass sich auch die Eigenschaften des Dateibesitzers oder seine Berechtigungen ändern, da der Besitzer die Berechtigungen normalerweise wieder auf Lesen/Schreiben zurücksetzen kann. Sie können dies in der Benutzeroberfläche des Datei-Explorers oder mitGet-Acl \\path\to\file.ext

verwandte Informationen