Get-acl и set-acl для Powershell для всего сетевого устройства после переноса данных - PullRequest
0 голосов
/ 07 февраля 2020

Случай: нам нужно перенести полное хранилище на новый компьютер (как с нуля), Windows Server 2008 на Windows Server 2012 и одновременно выполнить междоменную миграцию.

Сетевое устройство 1, подключенное со старым администратором домена на Y: со старой машины Сетевое устройство 2, подключенное с новым администратором домена на Z: на новой машине

Мы успешно скопировали все данные с помощью Robocopy:

ROBOCOPY %SORC% %DEST% /MIR /DCOPY:T /B /R:1 /W:1 /NP /LOG:%LOG%

Факт: Теперь нам нужно сделать еще два шага: перенести старый acl пользователя в скопированные файлы и папки. Я нашел get-acl и set-acl, но с:

get-acl Y:\ | set-acl Z:\

это только действие в этой папке / файле. Например, если я запускаю get-acl 'Y: \ IT \ folder' | set-acl 'Z: \ IT \ folder' список ACL для этой отдельной папки успешно скопирован.

Проблема a) Как я могу скопировать ACL для каждого файла и папки всего сетевого устройства (старого) на новое со всеми файлами, скопированными на него, и б) Как мне работать с этими файлами, у старого администратора на старой машине нет прав владельца из-за ошибок настроек безопасности в прошлом?

Подсказка: я уже пробовал / SE C Атрибут для Robocopy и других переключателей Robocopy - в нашем случае это не сработало из-за того, что нам пришлось запускать сценарий PS в хранилище новых доменов с новым доменом администратор - на старом хранилище есть только PowerShell версии 1 - потому что это сервер 2008 года.

1 Ответ

1 голос
/ 07 февраля 2020

Может потребоваться сделать это файл за файлом. Вы можете сделать это, получив полный рекурсивный список файлов всех папок и файлов на исходном диске, а затем l oop, установив ACL для каждой из них. Что-то вроде:

gci -Recurse Y:\ | % {
    $ThisACL = Get-Acl $_.FullName
    $ThisACL | Set-Acl $_.FullName.Replace('Y:\','Z:\')
}

Конечно, это позволит вам вставить некоторые операторы «Write-Progress», чтобы они отображались на экране, чтобы вы могли видеть, сколько времени это займет. Множество дополнений, которые вы могли бы сделать, чтобы улучшить обратную связь во время ее работы.

Кстати, это полностью непроверенный первый треск на проблему, поэтому я бы попробовал это на небольшом подмножестве, прежде чем запускать его на ваших живых данных. YMMV, права не защищены. Надеюсь, это поможет.

...