最初に、A)私はこれについて十分に調査していないか、B)ファンキーなハッキングを必要とする問題を発見しました。ところで、これは華麗なv1.0です。PowershellとTry-Catchと外部EXEでの出力リダイレクション/キャプチャの問題
ここにそれが行く:1週間
ほど前、私はそうでない場合はキャッチされていなかったPowerShellでEXEの・実行からの出力をリダイレクトについての質問をしました。私はすぐに問題を解決した "2> & 1"を提示されました。
今私は別の邪魔をしたことがあり、あなたのうちの何人かがそれに投げることができるものを見たいと思っています。
私は良いプログラマーとしてコード内でtry-catchブロックを使用しています。私は次のようにそれをいくつかのコマンドを渡し、GPG(gnupg.org)への呼び出しを配置するために行ったとき:
try `
{
& $gpgExeLocation --import $keyFileName 2>&1 | out-file "theOutput.txt";
} `
-Catch `
{
write-host "$_";
}
私は、空のテキストファイル(theOutput.txt)を取得します。
私はtry-catchブロックのの外に以外のコールを行うと、テキストファイルに期待どおりのテキストが書き込まれます。
stdoutへの出力リダイレクトの問題と、powershellが例外をトラップする方法に問題がある場合、またはそれが私のtry-catchコードで始まるのではないかと疑問に思っています。
は、ここに私の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
}
};
私はそれに多く(それは非常に便利です)を使用します。私はそれを試して、何が起こるか見るつもりです。それは有り難いです。 – CLR
成功!いくつかの悪い引数でgpgを呼び出し、それは簡単に戻りコードをキャッチしました。あなたが手伝ってくれた時を感謝します。乾杯! – CLR
はpowershell 2.0でも有効ですか? – Kiquenet