Я занимаюсь переносом всех данных с одного тома (1 ТБ) (не C :) на сервере AD на новый 4 ТБ. Я скопировал все данные, включая FolderRedirection и Profile.
Я как раз в процессе клонирования ACL безопасности с помощью PowerShell. Может ли кто-нибудь указать мне в правильном направлении, как записывать вывод в файл, чтобы я мог просмотреть его и убедиться, что ничего не удалось записать?
copypermissions.ps1
dir E:\Data -r | where {$_.PSIsContainer} | foreach {
$target= ($_.fullname).replace("E:","G:")
Get-Acl $_.Fullname | Set-Acl $target
}
Использование флага -whatif в конце команды Set-Acl показывает, что он будет пытаться делать то, что я хочу, но когда я на самом деле запускаю его в тестовой папке, не все копируется, и я получаю пару ошибок на консоли выглядит как:
Set-Acl: идентификатору безопасности не разрешено быть владельцем этого объекта.
В E: \ copypermissions.ps1: 3 символа: 32 + Get-Acl $ _. Полное имя | Set-Acl <<<< $ target + CategoryInfo: InvalidOperation: (G: \ Data \ Profiles *ИМЯ ПОЛЬЗОВАТЕЛЯ *: String) [Set-Acl], InvalidOperationException + FullyQualifiedErrorId: System.InvalidOperationException, Microsoft.PowerShell.Commands.SetAclCommand
Я действительно ищу простой 1 лайнер для добавления в конец скрипта, который будет записывать любые ошибки в файл журнала.
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
Перенаправить просто ошибки в от stederror
в обычный выходной поток, поместите 2> (filename)
в конце вашего запроса. Так получается:
dir E:\Data -r | where {$_.PSIsContainer} | foreach {
$target= ($_.fullname).replace("E:","G:")
Get-Acl $_.Fullname | Set-Acl $target
} 2> errors.txt
Используя Robocopy (версия без набора ресурсов), вы можете следуйте этому руководству.
Правильный синтаксис ROBOCOPY /E /Copy:S /IS /IT <Source> <Target>
.