在此示例中,如何获取引发异常的行号?下面的例子只给了我调用脚本块的行号(即$sb.Invoke())。我想要我抛出“FooBar 中的错误”的行号。
function Foobar {
throw "Error in FooBar"
}
function Bar {
FooBar
}
function Foo {
Bar
}
try {
$sb = ${function:Foo}
$sb.Invoke()
}
catch {
$ErrorMessage = $_.Exception.Message
$line = $_.InvocationInfo.ScriptLineNumber
$script_name = $_.InvocationInfo.ScriptName
write-host "<--Error: Occurred on line $line in script $script_name."
Write-host "<--Error: $ErrorMessage"
}
更新:
如果我改变:
$sb = ${function:Foo}
$sb.Invoke()
对此:
$func_info = get-command Foo
Invoke-Command $func_info.ScriptBlock
有用。