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

例如,我的“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-method

我希望它打印此:

mypath \ UtilityFunctions.ps1.utility-method

似乎调用$ MyInvocation总是返回启动时调用的文件名,而不是函数所在的文件名。如何获取包含函数的文件名?

最佳答案

我相信您要查找的内容存储在Get-Command返回的对象中

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

它既适用于点源脚本中定义的功能,又适用于模块中的功能。

关于powershell - 如何确定执行函数的文件名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39646517/

10-11 15:12