Любой язык - [решено] Скрипт на перенос прав NTFS

Ответить
Аватара пользователя
Tyamich

Любой язык - [решено] Скрипт на перенос прав NTFS

Сообщение Tyamich »

Доброго времени суток. У меня возникли следующие вопросы. Хотелось бы получить ответы у знающих людей:



Можно ли создать скрипт, который бы копировал права NTFS с одной папки на другую ?

Есть ли какие либо утилиты, с помощью которых можно это сделать или возможно команды в той же командной строке, power shell и так далее ?

Теперь поясню. Знаю, что можно с помощью xcopy скопировать содержимое одной папки в другую с сохранением ACL копируемой папки и копированием всего раздела со всеми подпапками. Но меня интересует именно копирование самого ACL без копирования каталогов и подкаталогов. Можно ли как-нибудь скопировать только права NTFS без переноса самого содержимого ? Допустим я хочу NTFS права папки test копировать другой папке - test 2.

Но так же хочу узнать и про нюансы. Допустим в папке test есть подпапки, а в test2 подпапок нету. Как тогда скопируются права NTFS с test на test2 ?

Плохо владею этим вопросом, хотелось бы уточнения
Аватара пользователя
DefenderDf

Re: Любой язык - [решено] Скрипт на перенос прав NTFS

Сообщение DefenderDf »

Товарищи, помогите написать скрипт для переноса ACL из .wim в текущую систему.

Необходимо:

- очистить права доступа на каталог в текущей системы

- скопировать права доступа к файлам и папкам для всех пользователей из .wim

- скопировать флаги наследования для папок из .wim

- последний шаг перенос владельца папок (включая системные папки: TrustedInstaller)



То что у меня есть на текущий момент:



Код:

Код: Выделить всё

$iPath = Read-Host "Enter original location for reading ACL (D: \ wim \)" # папка с смонтированным образом .wim
$ACLPath = Read-Host "Enter the full name of the file in which to save the ACL (D: \ ACL_file)"
function Recurse($path) {
 $fc = new-object -com scripting.filesystemobject
 $folder = $fc.getfolder($path)
 foreach ($i in $folder.files) {$i}
 foreach ($i in $folder.subfolders) {
   Write-Host $i.path
   $i
   if ((get-item -Force $i.path).Attributes.ToString ().Contains("ReparsePoint") -eq $false)
   {        
     Recurse($i.path) 
   }
 }
}  
$Act = Read-Host "`n Выбирете что нужно сделать: `n 1. Сохранить ACL в файл `n 2. Применить ACL из файла `n`n"
if ( $Act.ToString().Contains("1") -eq $true) {
   Recurse($iPath) | Get-NTFSAccess -ExcludeInherited | Export-Clixml $ACLPath".xml"
}
if ( $Act.ToString().Contains("2") -eq $true) {
}

Справка показалась мне неполной (Add-NTFSAccess -? И Clear-NTFSAccess -? модуль
NTFSSecurity
), Не смог понять, как применить правила из .xml к файлам и папкам в корне пути C:\
Ответить

Вернуться в «Скриптовые языки администрирования Windows»