2010-08-11 11 views

Respuesta

14

Puede recuperar el número de línea del objeto InvocationInfo en $_. Por ejemplo, la secuencia de comandos ...

"Hello, World!" 

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

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

foo 

... genera la salida:

Hello, World! 
10 
34 
8

Debe utilizar $_.InvocationInfo propiedades, por ejemplo: ScriptName, ScriptLineNumber, OffsetInLine, Line.

Por ejemplo, para dar formato a los datos de posición en el estilo de Visual Studio:

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

Será escribir algo como:

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

Además, sólo puede utilizar $_.InvocationInfo.PositionMessage, ver este post: How can I get powershell exception descriptions into a string?

0

Si solo quiere encontrar una línea de error después de que se ha ejecutado el script, puede ver $Error matriz. $Error[0] corresponde al último error.

Más detalles here.

Cuestiones relacionadas