Ошибка Powershell, из-за которой внешние команды молча терпят неудачу

У меня есть сложный сценарий powershell, который использует удаленное взаимодействие и выполняет большое количество операций копирования файлов, а также загрузки и выгрузки модулей powershell. В сценарии я использую robocopy для перемещения только файлов изменений, и все работает нормально.

Однако время от времени сеанс powershell переходит в странное состояние, когда он больше не выполняет внешние команды. Например, если я наберу robocopy в консоли, он сразу же вернется без ошибок и без вывода. Если я наберу whoami, он снова немедленно вернется без вывода. Он переходит в это состояние примерно в 1 из 10 запусков одного и того же скрипта.

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

Спасибо, Майк

Обновление Похоже, есть известная проблема с передачей массивов на хост записи, которая может вызвать такое поведение. Я не верю, что делаю это, но трудно знать наверняка. Мне удалось поставить ловушку на тестирование, когда результат whoami становится пустым. Как ни странно, это происходит во время ожидания длительной удаленной операции.


person TheCodeKing    schedule 29.05.2011    source источник
comment
Кстати, я решил, запустив сценарии без подробной трассировки. Неясно, решило ли это проблему из-за меньшего количества контента, записанного на консоль, или из-за отключения мошеннической трассировки.   -  person TheCodeKing    schedule 25.08.2011


Ответы (3)


К сожалению, у меня нет ответа для вас, но я также видел точно такое же поведение и могу добавить немного понимания; Я точно знаю, что не использую запись-хост, и эта проблема возникает только тогда, когда я использую фоновые задания powershell V2 и удаленное взаимодействие вместе. Обычно это происходит после того, как я выполнил довольно большое количество фоновых заданий, и, как и вы, проблема связана с этим единственным процессом powershell. Перезапуск powershell всегда решает проблему.

person jbsmith    schedule 30.06.2011

Для всех, кто может столкнуться с этим - проверьте все строки, которые имеют write-host - в моем случае виновником была эта строка в скрипте:

Хост записи ************* *************** **********

Он использовался в конце как визуальный маркер того, что все циклы завершены, а под ним была сводка... Как только я его удаляю, команды выполняются. Если я добавлю его, они перестанут выполняться... Может быть, звездочки переполняют какой-то буфер? Не уверен, но я никогда не буду использовать их снова... :)

person CRCerr0r    schedule 15.09.2011
comment
Интересно, что я не использую **** в трассировках. Я пытался напечатать это 1000 раз на консоли, но проблема не воспроизводится. - person TheCodeKing; 17.09.2011

Если вы используете параметр /R с командой robocopy, попробуйте увеличить количество повторных попыток. Лучше использовать значение по умолчанию. Надеюсь, это работает нормально.

-Архит

person AAB    schedule 20.03.2012
comment
Проблема заключалась в том, что сеанс powershell повреждался и, следовательно, больше не выполнял robocopy. - person TheCodeKing; 22.03.2012