Как я могу получить номер строки, в которой в этом примере выдается исключение? Пример ниже дает мне только номер строки, где я вызываю блок скрипта (т.е. $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
оно работает.