2009-09-14 19 views
11

Skrypt działa poprawnie, gdy standardowe wyjście/stderr nie jest przekierowane.Błąd podczas przekierowania stdout i stderr skryptu powłoki Power Shell

Po dodaniu przekierowania stderr i stdout otrzymuję następujący błąd: Jak mogę tego uniknąć?

% 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 
+0

Jak wygląda twój kod? – JasonMArcher

+0

Jakiś kod wywołujący CURL.exe – ripper234

+0

nigdy nie zaakceptowałeś mojej odpowiedzi, @ ripper234 – x0n

Odpowiedz

15

Lee Holmes (jeden ze starszych programistów w zespole PowerShell) Obejmuje to tutaj w blogu:

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

Jest to błąd w PowerShell 1.0, a zdarza się, gdy:

  • polecenia PowerShell generuje zarówno zwykłe jak i błąd wyjścia
  • użyłeś cmd.exe przekierować O utput do pliku
  • użyłeś cmd.exe scalić wyjścia i strumieni błąd

Istnieje obejście.

-Oisin

+0

Dzięki za artykuł. Próbowałem obu obejść (V1 i V2 CTP) i nie działa ("Nie można wywołać metody na wyrażenie o wartości null.") – ripper234

+0

Jaką wersję używasz? Nie mówisz w swoim oryginalnym pytaniu. – x0n

+0

Cóż, myślę, że używam V2 dzisiaj i zastanawiam się, czy widzę to również w V3. –

0

Kiedyś miałem kilka twardych połączonych węzłów w katalogu, który musiał mieć „GetItemChild” stosowane i otrzymał ten sam błąd, jak to pytanie.

Usunięcie węzłówek rozwiązało problem.

Powiązane problemy