我正在运行一些代码并尝试记录特定的事情。在日志中,我想记录当前函数和该函数所在的文件名。
例如,我的“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/