Weisen Sie PowerShell ISE zu, stderr nicht an Write-Error zu senden

8

Die PowerShell-Konsole und die PowerShell-ISE verhalten sich anders, wenn ausführbare Dateien in den Standardfehlerdatenstrom schreiben ( stderr ). Die Konsole (powershell.exe) zeigt sie wie die Standardausgabe an. Wenn ich zum Beispiel einen Status mit Mercurial auf einem Nicht-Repository erhalte, schreibt es in den Standardfehler:

%Vor%

In der PowerShell ISE ( powershell_ise.exe ) wird dieser Fehler jedoch an das Cmdlet Write-Error von PowerShell übergeben:

%Vor%

Gibt es eine Möglichkeit, die ISE so zu konfigurieren, dass sie sich wie die Konsole verhält, und den stderr-Stream nicht an Write-Error ?

zu senden?     
Aaron Jensen 21.09.2012, 19:47
quelle

2 Antworten

1
%Vor%

Dadurch wird die stderr-Ausgabe beibehalten und als normale Ausgabe gesendet, anstatt sie zu löschen.

    
Zenexer 18.10.2013, 11:17
quelle
7

Die stderr-Ausgabe an stdout umleiten "sollte" funktionieren, aber nicht in ISE. In diesem Fall ist es am besten, die Fehlerausgabe wie folgt stumm zu schalten:

%Vor%

Wenn Sie diese Variable in einem verschachtelten Bereich festlegen, vermeiden Sie es, sie global festzulegen. Wenn der obige Bereich beendet wird, wird die globale Version von $ErrorActionPreference immer noch auf den vorherigen Wert gesetzt.

Es ist bedauerlich, dass sich ISE und die Konsole anders verhalten, aber ich verstehe, dass mit der "Konsole" eine andere Konsolenanwendung nur das Konsolenhandle bekommt, so dass es direkt auf die Konsole ausgibt (Bypassing) Power Shell). ISE ist nicht konsolenbasiert, daher versucht es, natives stderr gut mit dem PowerShell-Fehlerstream zu spielen. IMO das Verhalten der Konsole ist in diesem Fall nicht ideal. Also ist es besser, ISE konsistent mit Konsole oder besser ISE Griff Stderr besser zu haben (mit Ausnahme der Bit über Stream-Umleitung nicht zu honorieren)? Offensichtlich ging die PowerShell mit letzterem.

    
Keith Hill 21.09.2012 21:46
quelle

Tags und Links