Powershell – 克隆整个驱动器的ACL – 错误日志?

我正在将所有数据从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轮添加到脚本的结尾,将任何错误写入日志文件。

要将错误stederrorredirect到常规输出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>