Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 如何确定正在执行的函数的文件名_Powershell - Fatal编程技术网

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

Powershell 如何确定正在执行的函数的文件名,powershell,Powershell,我正在运行一些代码,并试图记录一些特定的事情。在日志中,我想记录当前函数以及该函数存在的文件名 例如,我的“Main.ps1”文件类似于以下内容: . .\UtilityFunctions.ps1 function Main-Routine { utility-method } Main-Routine function utility-method { "{0}.{1}" -f $MyInvocation.ScriptName, $MyInvocation.MyComma

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

例如,我的“Main.ps1”文件类似于以下内容:

. .\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