如何确定执行函数的文件名

时间:2016-09-22 18:36:35

标签: powershell

我正在运行一些代码并尝试记录特定的东西。在日志中,我想记录当前函数和存在该函数的文件名。

例如我的" 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始终返回启动时调用的文件名,而不是函数所在的文件名。如何获取包含我的函数的文件名?

1 个答案:

答案 0 :(得分:3)

我相信您要找的内容存储在Get-Command

返回的对象中
(Get-Command Utility-Method).ScriptBlock.File

它既适用于点源脚本中定义的函数,也适用于模块中的函数。