Copy-Item с тайм-аутом

Я восстанавливаю файлы с жесткого диска, на котором некоторые файлы не читаются. Я не могу изменить время ожидания аппаратного уровня / ERC, и мне чрезвычайно трудно обойтись, когда у меня есть несколько сотен тысяч файлов, любые десятки тысяч из которых могут быть нечитаемыми.

Проблемы с данными были результатом сбоя контроллера. Купив соответствующий диск (до конца), я смог получить доступ к диску и без проблем скопировать его. Однако на диске есть нечитаемые файлы, которые при обращении к ним приводят к зависанию шины SATA. Я использовал различные приложения для возобновления копирования файлов, такие какrobocopy, RichCopy и дюжина других, но у них у всех одна и та же проблема. У них есть счетчик RETRY, основанный на фактическом получении сообщения об ошибке с диска. Проблема заключается в том, что накопителю требуется очень много времени, чтобы сообщить об ошибке, а это означает, что для отказа одного файла может потребоваться до часа. Я знаю, насколько быстрым должен быть каждый файл, поэтому я хотел бы создать PowerSD-оболочку CMDLET или аналогичную, которая позволит мне передать имя файла источника и назначения и попытаться скопировать файл. Если через 5 секунд файл не скопирован (или если есть - это может быть глупым процессом), я бы хотел, чтобы он прекратил работу. Я напишу сценарий, который запускает каждый процесс копирования по отдельности, ожидая, пока процесс не завершится, но я пока не могу найти хороший способ ограничения времени процесса.

Будем весьма благодарны за любые ваши предложения!

Редактировать: Я был бы счастлив порождатьCopy-Item в новом потоке, с новым PID, затем идет обратный отсчет, а затем убивает этот PID. Я просто новичок в PowerShell, и я видел так много противоречивых методов наложения таймеров, что я заблудился из-за того, каким был бы наилучший способ.

Изменить 2: Обратите внимание, что такие приложения, какrobocopy будет зависать при встрече с плохими областями диска. Это не простые зависания, а зависания шины, которые Windows попытается сохранить, чтобы не потерять данные. В этих случаях диспетчер задач не может завершить процесс, но Process Explorer IS. Я не уверен, в чем разница в методологии, но, тем не менее, это кажется актуальным.

Ответы на вопрос(1)

Ваш ответ на вопрос