Powershell:打印失败函数名称的调试函数(来自模块)

Powershell: Debug function to print out failed function name (from a module)

你好, 我写了一个很好的调试函数,它提供了调用它的函数的名称。代码是:

Function Write-Log {
  $callerName = (Get-Variable MyInvocation -Scope 1).Value.MyCommand.Name

  $stamp = (Get-Date).toString("yyyy/MM/dd HH:mm:ss")
  $line = "$stamp [$level`]: $callerName $Message"

  Write-Host $line -ForegroundColor $color
}

从 .ps1 脚本内部调用时效果很好;但是我开始重构代码,以便将某些函数移至 .psm1 模块 - 这就是函数失败的地方。它不打印函数名称,只提供模块名称。

如何修复此函数,使其仅显示函数名称或作用域和函数名称?

谢谢leeharvey1。将您的建议作为答案发布,以帮助其他社区成员。

在您的模块中,您可以尝试使用 $callerName = "{0} - {1}:" -f (Get-PSCallStack)[1].Location, (Get-PSCallStack)[1].FunctionName