2016-09-22 11 views
1

私はいくつかのコードを実行していて、特定のものをログに記録しようとしています。ログには、現在の関数とその関数が存在するファイル名を記録したいと思います。実行中の関数のファイル名を確認する方法

例えば私の「Main.ps1」ファイルには、次のようになります。

. .\UtilityFunctions.ps1 

function Main-Routine 
{ 
    utility-method 
} 

Main-Routine 

マイUtilityFunctions.ps1は次のようになります。

function utility-method 
{ 
    "{0}.{1}" -f $MyInvocation.ScriptName, $MyInvocation.MyCommand 
} 

次のようにこれは、コンソールに出力します:

mypathで \ Main.ps1.utility-方法

私はそれが代わりにこれを印刷したい:

mypathで \ UtilityFunctions.ps1.utility-方法

$ MyInvocationを呼び出すと、常にではなく、ファイル名よりも、起動時に呼び出されるファイル名を返すようです関数が存在する。自分の機能を含むファイル名を取得するにはどうすればよいですか?私はあなたが探しているものと信じて

答えて

3

は、それはモジュール内の関数として、ドットソースのスクリプトで定義された関数の両方を動作するはずGet-Command

(Get-Command Utility-Method).ScriptBlock.File 

によって返されたオブジェクトに格納されています。

+1

完璧、ありがとう。私は以下のように変更して汎用的なものにしました:(Get-Command $ MyInvocation.MyCommand).ScriptBlock.File – Paul

関連する問題