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
。
你好, 我写了一个很好的调试函数,它提供了调用它的函数的名称。代码是:
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
。