2009-09-14 9 views
11

Le script s'exécute correctement lorsque stdout/stderr ne sont pas redirigés.Erreur lors de la redirection de stdout et stderr du script powershell

Lorsque j'ajoute à la fois la redirection stderr et la redirection stdout, j'obtiens l'erreur suivante: Comment puis-je l'éviter?

% 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

À quoi ressemble votre code? – JasonMArcher

+0

Un peu de code appelant CURL.exe – ripper234

+0

vous n'avez jamais accepté ma réponse, @ ripper234 – x0n

Répondre

15

Lee Holmes (un des développeurs principaux de l'équipe de Powershell) couvre ce ici dans un billet de blog:

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

Ceci est bogue dans PowerShell v1.0, et se produit lorsque:

  • une commande PowerShell génère à la fois la sortie régulière et l'erreur
  • vous avez utilisé cmd.exe pour rediriger le o utput un fichier
  • vous avez utilisé cmd.exe pour fusionner la sortie et l'erreur flux

Il existe une solution.

-Oisin

+0

Merci pour l'article. J'ai essayé les deux solutions de contournement (V1 et V2 CTP) et cela ne fonctionne pas ("Vous ne pouvez pas appeler une méthode sur une expression null-value.") – ripper234

+0

Quelle version utilisez-vous? Vous ne dites pas dans votre question initiale. – x0n

+0

Eh bien, je pense que j'utilise V2 aujourd'hui et je me demande si je le vois aussi en V3. –

0

J'ai eu plusieurs jonctions difficiles liées au répertoire qui devaient avoir « GetItemChild » appliquée, et a reçu la même erreur que cette question.

La suppression des jonctions a résolu le problème.

Questions connexes