Tout d'abord, soit A) Je n'insiste pas assez sur ce sujet ou B) J'ai trouvé un problème qui nécessite un bidouillage funky. En passant, c'est chic v1.0.Problème de redirection/capture Ouput avec Powershell et Try-Catch et EXE externe
Ici, il va:
Une semaine ou alors j'ai demandé il y a une question sur redirigeant la sortie du exection d'un EXE dans Powershell qui était par ailleurs ne pas être pris. Je suis rapidement présenté avec « 2> & 1 » qui a résolu le problème.
Maintenant, j'ai frappé un autre accroc et l'espoir de voir ce que certains d'entre vous stackoverflowers peut jeter.
J'utilise des blocs try-catch à travers mon code comme un bon programmeur doit. Quand je suis allé passer un appel à GPG (gnupg.org), en lui passant quelques commandes comme suit:
try `
{
& $gpgExeLocation --import $keyFileName 2>&1 | out-file "theOutput.txt";
} `
-Catch `
{
write-host "$_";
}
je reçois un fichier texte vide (theOutput.txt).
Mais si je fais le même appel en dehors de du bloc try-catch, le fichier texte obtient du texte écrit comme prévu. Ce que je me demande, c'est s'il y a un problème avec la redirection de sortie vers stdout et la façon dont powershell piège les exceptions - ou si c'est mon code try-catch pour commencer?
ici est ma mise en œuvre try-catch
function global:try
{
param
(
[ScriptBlock]$Command = $(Throw "The parameter -Command is required."),
[ScriptBlock]$Catch = { Throw $_ },
[ScriptBlock]$Finally = {}
)
& {
$local:ErrorActionPreference = "SilentlyContinue"
trap
{
trap
{
& {
trap { Throw $_ }
&$Finally
}
Throw $_
}
$_ | & { &$Catch }
}
&$Command
}
& {
trap { Throw $_ }
&$Finally
}
};
Je suis heureux et na pas déclencher lu votre code. Je vais l'essayer et voir ce qui se passe. Je vous en suis reconnaissant. – CLR
Succès! Appelé gpg avec quelques mauvais arguments et il a attrapé le code retour avec facilité. J'apprécie le temps que vous avez pris pour aider. À votre santé! – CLR
est toujours valable pour PowerShell 2.0? – Kiquenet