我正在使用 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) 方法。然而,我正在尝试的一切都没有按预期工作。
这里有什么帮助吗?也许我的目标完全错了。