2

スクリプトを指定します。

$foo = @("bar")

try {
    $foo | ForEach-Object {
        Join-Path $null $null
    }
} catch {
    $_.InvocationInfo.Line
}

印刷します

$foo | ForEach-Object {

しかし、私はしたいです

Join-Path $null $null

例外が実際に発生した場所を取得するにはどうすればよいですか?

4

1 に答える 1

4

これにより、実際の行が得られます。

$_.Exception.CommandInvocation.Line

および例外メッセージ:

$_.Exception.Message

および行番号:

$_.Exception.Line

およびオフセット (列):

$_.Exception.Offset

したがって、役立つ小さなメッセージを作成できます。

} catch {
    $msg = "Failed to do something. Failed on line number '{0}' column '{1}' ('{2}'). The error was '{3}'." -f 
        $_.Exception.Line, $_.Exception.Offset, $_.Exception.CommandInvocation.Line.Trim(), $_.Exception.Message
    Write-Error $msg
}
于 2012-05-11T21:21:55.027 に答える