У меня есть сценарий powershell, который генерирует отчет, и я подключил его к io.filesystemwatcher. Я пытаюсь улучшить возможности обработки ошибок. У меня уже есть функция генерации отчета (которая принимает только путь к файлу) внутри try-catch l oop, которая в основном убивает word, excel и powerpoint и пытается снова, если это не удается. Кажется, это работает хорошо, но я хочу встроить еще одну попытку-ловушку l oop, которая перезагрузит компьютер и сгенерирует отчет после перезагрузки, если он выйдет из строя второй раз подряд.
Я решил попробовать и измените реестр после прочтения этой статьи: https://cmatskas.com/configure-a-runonce-task-on-windows/
Мой план будет таким: во второй попытке поймать l oop Я создам текстовый файл с именем RecoveredPath.txt с файлом путь является его единственным содержимым, а затем добавьте что-то вроде:
Set-ItemProperty "HKLMU:\Software\Microsoft\Windows\CurrentVersion\RunOnce" -Name '!RecoverReport' -Value "C:\...EmergencyRecovery.bat"
Перед перезагрузкой. В пакетном файле у меня есть:
set /p RecoveredDir=<RecoveredPath.txt
powershell.exe -File C:\...Report.ps1 %RecoveredDir%
Когда я пытаюсь запустить пакетный скрипт, он не выдает никаких ошибок, но, похоже, ничего не делает. Я попытался добавить оператор echo, и он сохраняет значение текстового файла как переменную, но, похоже, не передает его правильно в powershell. Я также попытался добавить -Path% RecoveredDir%, но это привело к ошибке (параметр в report.ps1 называется $ Path).
Что я делаю неправильно?