2013-06-21 17 views
10

Powershellスクリプトを実行しているときにエラーの行番号を取得しようとしています。私は現時点でこれを使用しています:Powershellでエラーの行番号を取得する方法

  $e = $_.Exception 
      $line = $_.Exception.InvocationInfo.ScriptLineNumber 
      $msg = $e.Message 

      Write-Host -ForegroundColor Red "caught exception: $e at $line" 

時にはこれはうまく動作しないことがあります。私は何か間違っているのか、この仕事をより一貫して行うために何ができるのだろうと思っています。

+0

はあなたが必要な情報を与えていないのtry catchステートメントはありますか?これはキャッチですか? –

+0

いいえtry/catchはエラーのみを返します。それは行番号とものを一覧表示しません。 – BlackHatSamurai

+0

catch {[Exception] $ _。ScriptLineNumber}がそうするかもしれないと私は推測しましたが(例外はありませんが)、例外をエコーし​​て、 。だから私はあなたがそれを見つけてうれしいです。 –

答えて

16

私は、問題が何であったかを考え出し:

の代わりに:

  $e = $_.Exception 
      $line = $_.Exception.InvocationInfo.ScriptLineNumber 
      $msg = $e.Message 

      Write-Host -ForegroundColor Red "caught exception: $e at $line" 

それはする必要があります:

 $e = $_.Exception 
     $line = $_.InvocationInfo.ScriptLineNumber 
     $msg = $e.Message 

     Write-Host -ForegroundColor Red "caught exception: $e at $line" 
関連する問題