
При создании новых проектов мы используем главную папку проекта, одна из подпапок имеет явные ограничения доступа, отличные от содержащей ее папки.
Этот ACL теряется, когда вы копируете и вставляете главную папку в новый проект. Мы не хотим, чтобы он наследовал какую-либо часть ACL из новой папки проекта.
Как нам сохранить явный ACL для этой папки и ее подпапок/файлов с помощью проводника. Есть ли способ защитить явный ACL через копирование и вставку.
Есть ли способ сделать это с помощью скрипта в скопированном каталоге, который при двойном щелчке восстановит ACL в подкаталоге?
Я могу запустить команду powershell или команду icacls, чтобы сделать это, но не вижу способа сделать это через графический интерфейс, не вдаваясь в долгие рассуждения.
Возможно, я мог бы просто периодически запускать скрипт PowerShell, который ищет новые папки в определенном каталоге и запрашивает, есть ли какие-либо новые папки, соответствующие папке проекта, и применяет набор ACL к последующим новым подпапкам.
решение1
$SearchFolderPath = "C:\shares\Data\Clients & Projects\Projects"
$MasterFolder = "C:\shares\Data\ACL Scripts\Sample Folders\Master-test"
$AllFolders = Get-ChildItem -Path $SearchFolderPath -Directory -Recurse
$NameToMatch = "Folder Name to match"
$MasterAcl = Get-Acl -Path $MasterFolder
foreach($Folder in $AllFolders)
{
if($Folder.FullName -ne $MasterFolder -and $Folder.Name -match ".*$NameToMatch.*")
{
$MasterAcl | Set-Acl -Path $Folder.FullName
Write-Host "The Master ACL path has been set to $($Folder.FullName)" -ForegroundColor Green
}
}