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

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

我正在将 AD 服务器上一个 (1 TB) 卷(不是 C:)中的所有数据迁移到一个新的 4 TB 卷。我已复制了所有数据,包括 FolderRedirection 和 Profile 内容。

我正在使用一些 PowerShell 克隆安全 ACL。有人能告诉我如何将输出记录到文件中,以便我可以查看它并确保没有写入失败吗?

复制权限.ps1

dir E:\Data -r | where {$_.PSIsContainer} | foreach { 
  $target= ($_.fullname).replace("E:","G:") 
  Get-Acl $_.Fullname | Set-Acl $target 
} 

在 Set-Acl 命令末尾使用 -whatif 标志表明它将尝试执行我想要的操作,但是当我实际在测试文件夹上运行它时,并非所有内容都被复制,并且我在控制台上收到几个错误,如下所示:

Set-Acl:安全标识符不允许成为此对象的所有者。

在 E:\copypermissions.ps1:3 char:32 + Get-Acl $_.Fullname | Set-Acl <<<< $target + CategoryInfo : InvalidOperation: (G:\Data\Profiles*用户名*:String)[Set-Acl],InvalidOperationException + FullyQualifiedErrorId:System.InvalidOperationException,Microsoft.PowerShell.Commands.SetAclCommand

我确实正在寻找一个简单的 1 行代码添加到脚本末尾,将任何错误写入日志文件。

答案1

重定向只是错误从到stederror常规输出流,放在2> (filename)查询的末尾。因此它变成:

dir E:\Data -r | where {$_.PSIsContainer} | foreach { 
  $target= ($_.fullname).replace("E:","G:") 
  Get-Acl $_.Fullname | Set-Acl $target 
} 2> errors.txt

答案2

Robocopy 是 Windows 最新版本附带的复制实用程序(以前是需要下载的资源工具包工具)。当启用某些开关时,它将复制您的文件和 ACL。

要将整个文件夹树安全地从旧驱动器复制到新驱动器,您需要以管理员权限从命令提示符或 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 开关说明

答案3

使用 Robocopy(非资源套件版本),您可以遵循本指南

正确的语法是ROBOCOPY /E /Copy:S /IS /IT <Source> <Target>

相关内容