我正在将所有数据从AD服务器上的一个(1TB)卷(不是C :)迁移到新的4TB。 我已经复制了所有的数据,包括FolderRedirection和configuration文件的东西。
我只是用一点PowerShell来克隆安全ACL。 任何人都可以指出我正确的方向如何将输出logging到一个文件,所以我可以检查它,并确保没有写失败?
copypermissions.ps1
dir E:\Data -r | where {$_.PSIsContainer} | foreach { $target= ($_.fullname).replace("E:","G:") Get-Acl $_.Fullname | Set-Acl $target }
在Set-Acl命令的末尾使用-whatif标志显示它会尝试并做我想要的,但是当我真的在testing文件夹上运行它时,并不是所有东西都被复制,并且在控制台上出现了一些错误看起来像:
Set-Acl:安全标识符不被允许为该对象的所有者。
在E:\ copypermissions.ps1:3 char:32 + Get-Acl $ _。Fullname | Set-Acl <<<< $ target + CategoryInfo:InvalidOperation:(G:\ Data \ Profiles * USERNAME * :String)[Set-Acl],InvalidOperationException + FullyQualifiedErrorId:System.InvalidOperationException,Microsoft.PowerShell.Commands.SetAclCommand
我正在寻找一个简单的1class轮添加到脚本的结尾,将任何错误写入日志文件。
要将错误从stederror
redirect到常规输出stream,请在查询的末尾放置2> (filename)
。 所以它变成:
dir E:\Data -r | where {$_.PSIsContainer} | foreach { $target= ($_.fullname).replace("E:","G:") Get-Acl $_.Fullname | Set-Acl $target } 2> errors.txt
Robocopy是一个复制实用程序,包含在最新版本的Windows中(它以前是您需要下载的资源工具包工具)。 它将在启用某些开关时复制您的文件和ACL。
要将具有安全性的整个文件夹树从旧驱动器复制到新驱动器,可以从具有pipe理员权限的命令提示符或PowerShell窗口运行以下命令:
Robocopy \\source \\destination /MIR /SEC /ZB
您也可以运行Robocopy,只需将文件安全性应用于文件而不复制数据。
Robocopy \\source \\destination /SECFIX
要获取有关Robocopy的更多信息,可以查看以下资源: http : //ss64.com/nt/robocopy.html – Robocopy命令行开关的说明http://support.microsoft.com/kb/323275 – 说明/ SECFIX开关
使用Robocopy(非资源工具包版本),你可以按照这个指南 。
正确的语法是ROBOCOPY /E /Copy:S /IS /IT <Source> <Target>
。