Powershell - возможно ли загрузить несколько объектов FileSecurity из одного файла? - PullRequest
1 голос
/ 09 января 2020

Я использую 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). Однако все, что я пытаюсь сделать, работает не так, как хотелось бы. Может быть, я неправильно понимаю свою цель.

...