Я использую Windows 10 и Powershell. Я перемещаю большой каталог файлов на новый сервер. Файлы будут легко скопированы, однако разрешения не будут скопированы. Я работал над созданием серии сценариев, чтобы сохранить все разрешения для каждого уровня каталога, а затем иметь возможность назначать файлам в новом месте одинаковые разрешения на каждом уровне. Это то, что я придумал для сохранения прав доступа к файлу. (T: \ - это каталог, из которого перемещаются файлы)
Примечание: я собирался использовать get-acl и set-acl, но, очевидно, вы не можете использовать set-acl без перезаписи владельца каждого файла .
$output = @()
ForEach ($item in (Get-ChildItem -Path T:\ -Recurse -Directory)) {
ForEach ($acl in ($item.GetAccessControl().Access)){
$output += $acl |
Add-Member `
-MemberType NoteProperty `
-Name 'Folder' `
-Value $item.FullName `
-PassThru
}
}
$output | Export-Csv -Path .\outfile.csv -NoTypeInformation
Работает для сохранения необходимой информации в файл. Моя проблема заключается в перезагрузке всех разрешений, когда файлы находятся в новом месте. Из того, что я смог выяснить, мне нужно использовать метод File.SetAccessControl (String, FileSecurity). Однако все, что я пытаюсь сделать, работает не так, как хотелось бы. Может быть, я неправильно понимаю свою цель.