У меня есть определенная проблема, которую я в настоящее время не могу решить сам. В моей компании есть публичная папка, в которой пользователи (другие работники) могут создавать файлы. Проблема в том, что эту папку нужно настроить таким образом, чтобы пользователи могли создавать файлы в этой папке в тот же день: каждый вечер выполняется скрипт, который делает все вновь созданные файлы в этой папке (включая все файлы в подпапках) доступными только для чтения. Эта публичная папка находится на компьютере под управлением Windows 10.
Мне уже удалось получить простой скрипт Powershell, который способен сделать все файлы в текущей папке доступными только для чтения:
$folderPath = 'C:\TestFolder'
Get-ChildItem -Path $folderPath -Recurse -File | % { $_.IsReadOnly=$True }`
Этот скрипт powershell запускается из учетной записи администратора, и это означает, что после выполнения скрипта ежедневно только администратор может редактировать файлы в папке, но пользователи больше не могут. На следующий день пользователи могут создавать новые файлы, но больше не могут редактировать текущие, и цикл повторяется каждый день: новые файлы будут «заблокированы» как доступные только для чтения со следующего дня.
Есть ли у кого-нибудь идеи, как реализовать такие разрешения файлов в PowerShell?
Моя собственная идея алгоритма для этого скрипта:
Рекурсивно найти все файлы
сделать их доступными только для чтения
удалить доступ пользователя для изменения любого найденного файла
сохранить доступ пользователей для создания новых файлов и просмотра текущих
Любые советы приветствуются!
решение1
С помощью PowerShell можно указать только файлы старше определенной даты, например:
Get-ChildItem -Path $folderPath -Recurse -File |
Where-Object CreationTime -lt (get-date).AddDays(-1) |
% { $_.IsReadOnly=$True }
Убедитесь, что свойство владельца файла или его разрешения также изменились, так как владелец обычно может вернуть разрешения на чтение/запись. Вы можете проверить в пользовательском интерфейсе проводника файлов или с помощьюGet-Acl \\path\to\file.ext