Ошибка при перенаправлении stdout и stderr скрипта powershell

Сценарий работает нормально, когда stdout/stderr не перенаправляются.

Когда я добавляю перенаправление stderr и stdout, я получаю следующую ошибку: Как этого избежать?

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0 19.4M    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
 81 19.4M    0     0   81 15.9M      0  54.5M --:--:-- --:--:-- --:--:-- 55.8M
100 19.4M    0     0  100 19.4M      0  14.2M  0:00:01  0:00:01 --:--:-- 14.3M
100 19.4M    0     0  100 19.4M      0  8428k  0:00:02  0:00:02 --:--:-- 8454k
100 19.4M    0     0  100 19.4M      0  5924k  0:00:03  0:00:03 --:--:-- 5937k
100 19.4M    0     0  100 19.4M      0  4567k  0:00:04  0:00:04 --:--:-- 4575k
100 19.4M    0    50  100 19.4M     10  4291k  0:00:04  0:00:04 --:--:--  835k
out-lineoutput : The OS handle's position is not what FileStream expected. Do not use a handle simu
ltaneously in one FileStream and in Win32 code or another FileStream. This may cause data loss.
    + CategoryInfo          : NotSpecified: (:) [out-lineoutput], IOException
    + FullyQualifiedErrorId : System.IO.IOException,Microsoft.PowerShell.Commands.OutLineOutputCom 
   mand

person ripper234    schedule 14.09.2009    source источник
comment
Как выглядит ваш код?   -  person JasonMArcher    schedule 15.09.2009
comment
ты так и не принял мой ответ, @ripper234   -  person x0n    schedule 02.05.2013
comment
@ x0n - спасибо, что напомнили, готово.   -  person ripper234    schedule 03.05.2013


Ответы (2)


Ли Холмс (один из старших разработчиков в команде powershell) рассказывает об этом в своем блоге:

http://www.leeholmes.com/blog/WorkaroundTheOSHandlesPositionIsNotWhatFileStreamExpected.aspx

Это ошибка в PowerShell v1.0 и происходит, когда:

  • команда PowerShell генерирует как обычный вывод, так и вывод с ошибкой
  • вы использовали cmd.exe для перенаправления вывода в файл
  • вы использовали cmd.exe для объединения потоков вывода и ошибок

Есть обходной путь.

-Ойсин

person x0n    schedule 14.09.2009
comment
Спасибо за статью. Я попробовал оба обходных пути (V1 и V2 CTP), и они не работают (вы не можете вызвать метод для выражения с нулевым значением). - person ripper234; 14.09.2009
comment
Какую версию ты используешь? Вы не говорите в своем первоначальном вопросе. - person x0n; 15.09.2009
comment
Ну, я думаю, что сегодня я использую V2, и мне интересно, увижу ли я его и в V3. - person bernd_k; 08.07.2011
comment
@bernd_k Согласно обновлению в цитируемом сообщении, он отсортирован для Windows 8. Я до сих пор не могу поверить, что нам придется бороться с ним в версии 2 еще 10 лет. Грр. - person Ruben Bartelink; 18.10.2011
comment
Ссылка в ответе больше не доступна. Доступен ли обходной путь где-либо еще? - person w128; 20.07.2016
comment
Новый URL-адрес сообщения в блоге: http://www.leeholmes.com/blog/2008/07/30/workaround-the-os-handles-position-is-not-what-filestream-expected./ - person w128; 21.07.2016

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

Удаление соединений решило проблему.

person Anton    schedule 25.01.2010