Powershell 如何确定正在执行的函数的文件名
我正在运行一些代码,并试图记录一些特定的事情。在日志中,我想记录当前函数以及该函数存在的文件名 例如,我的“Main.ps1”文件类似于以下内容:Powershell 如何确定正在执行的函数的文件名,powershell,Powershell,我正在运行一些代码,并试图记录一些特定的事情。在日志中,我想记录当前函数以及该函数存在的文件名 例如,我的“Main.ps1”文件类似于以下内容: . .\UtilityFunctions.ps1 function Main-Routine { utility-method } Main-Routine function utility-method { "{0}.{1}" -f $MyInvocation.ScriptName, $MyInvocation.MyComma
. .\UtilityFunctions.ps1
function Main-Routine
{
utility-method
}
Main-Routine
function utility-method
{
"{0}.{1}" -f $MyInvocation.ScriptName, $MyInvocation.MyCommand
}
My UtilityFunctions.ps1看起来类似于以下内容:
. .\UtilityFunctions.ps1
function Main-Routine
{
utility-method
}
Main-Routine
function utility-method
{
"{0}.{1}" -f $MyInvocation.ScriptName, $MyInvocation.MyCommand
}
这将打印到控制台,如下所示:
mypath\Main.ps1.utility-method
我想让它打印这个:
mypath\UtilityFunctions.ps1.utility-method
调用$MyInvocation似乎总是返回启动时调用的文件名,而不是函数所在的文件名。如何获取包含函数的文件名?我相信您要查找的内容存储在
get命令返回的对象中
(Get-Command Utility-Method).ScriptBlock.File
它应该既适用于源于点的脚本中定义的函数,也适用于模块中的函数。非常好,谢谢。我修改如下,因此它是通用的:(Get命令$MyInvocation.MyCommand).ScriptBlock.File