Редактировать: Кроме того, причина, по которой я не использую ведение журнала через Robocopy, заключается в том, что он не хочет работать с / MT: либо. Все, что я получаю, это начальный и конечный статус sh с использованием ведения журнала robocopy.
Ниже приведен мой текущий скрипт для поиска определенных c файлов в сети с помощью robocopy. Отлично работает, особенно с многопоточностью. Тем не менее, я ищу в сетевых ресурсах и иногда сталкиваюсь с каталогом, к которому у меня нет доступа. Робокопия, похоже, обладает некоторой способностью отбрасывать сообщения об отказе в доступе, но я не смог заставить их работать с параметром / L. / MT: также иногда имеет тенденцию делать некоторые странные вещи с выводом. / V (многословный) не влияет на вывод при сочетании с /L.
Без / MT: set, я могу медленно вывести все каталоги и файлы в списке. Однако, если мне отказано в доступе к определенному каталогу, в выходных данных будет отображаться только родительский каталог, в котором мне изначально отказано.
Если я включу / MT: я все равно смогу найти файлы и папки, однако тогда журнал не выводит верхний родительский каталог по пути, к которому мне запрещен доступ.
Robocopy - мой единственный вариант из-за проблем с длинной дорогой в DIR и Get-childitem. До сих пор он работал быстрее всех из опций из-за многопоточности.
Разрешения не изменяются, и у меня нет прав администратора резервного копирования для переопределения запретов ACL.
Если кто-то знает как захватить журналы отказа / отказа, или есть подсказка, я был бы очень счастлив. Я знаю, что у меня есть отрицание, потому что в нижней части каждого журнала будет указано, сколько раз оно не удалось. Но если он перечисляет, сколько раз он выходил из строя, наверняка есть способ писать каждый раз индивидуально в журнал?
Чтобы настроить искусственный сбой дома, я использовал стандартную учетную запись для запуска ISE, и с помощью моего admin, создал каталог с некоторыми файлами, а затем другой подкаталог внутри, удалив все разрешения для каждого подкаталога и файлов внутри него, и изменил владельца на system. Все файлы были обнаружены, однако, подкаталог показывался только с верхней папкой, и он не мог искать глубже.
$ErrorActionPreference = 'continue'
remove-item C:\Users\$env:username\documents\log.txt
$measure= Measure-Command -Expression{
$path = "C:\Users\$env:username\New folder"
robocopy $path null /V /L /E /FP /XJD /XJF /R:1 /W:1 /MT:8 | % {
[string] $out=$_;
if(!($out.Contains("%"))){ECHO $out | Out-File "c:\users\$env:username\documents\log.txt" -Append}
} }
write-host $measure