2010-08-11 75 views

回答

14

您可以從$_上的InvocationInfo對象檢索行號。例如,腳本...

"Hello, World!" 

function foo() { 
    trap [Exception] { 
    $_.InvocationInfo.ScriptLineNumber 
    $_.InvocationInfo.OffsetInLine 
    continue; 
    } 

    [reflection.assembly]::loadfrom("C:\") 
} 

foo 

...生成輸出:

Hello, World! 
10 
34 
8

你應該使用$_.InvocationInfo特性,例如:ScriptNameScriptLineNumberOffsetInLineLine

例如格式化在Visual Studio風格的位置信息:

trap { 
    Write-Host "$($_.InvocationInfo.ScriptName)($($_.InvocationInfo.ScriptLineNumber)): $($_.InvocationInfo.Line)" 
} 

它會寫類似:

C:\TEMP\test2.ps1(8): Get-Item missing 

另外,你可以只使用$_.InvocationInfo.PositionMessage,看到這個帖子: How can I get powershell exception descriptions into a string?

0

如果您只是想在腳本執行後找到錯誤行,您可以查看$Error數組。 $Error[0]對應於最後一個錯誤。

更多詳細信息here