在 PowerShell 模块中,在导出函数中使用 Start-Transcript 会更改 return 值?

In a PowerShell module, using Start-Transcript in an exported function, changes the return value?

希望有人能协助解决这个问题。 我出于某些工作目的创建了一个记录器,我将其制作为 PS 模块。 记录器工作正常,但刚刚了解到 Start-Transcript 并认为我会将其合并到我的模块中,以在运行时日志中记录所有内容(包括错误和其他信息)。

该模块包含一个 PS Class 和一个导出函数。 (参见 https://github.com/Ostekages/Powershell_logger/blob/main/logger.psm1

但是,我遇到了一个问题。

创建 class 的实例时,通常是 TypeName: Logger

但是当 Start-Transcript 在导出函数中时,它现在是 TypeName: System.String

供参考,这是两个导出的函数,有或没有 start-transcript:

function UseLogger ($name, $path) {
    return [Logger]::New($name,$path)
}

Export-ModuleMember -Function UseLogger
function UseLogger ($name, $path) {
    Start-Transcript -Path "$Path" -Append -NoClobber
    return [Logger]::New($name,$path)
}

Export-ModuleMember -Function UseLogger

我的问题是来自 class 的方法不起作用,只报告 No method "log" on type [System.String]

非常感谢任何信息!

问候 奥斯特

Start-Transcript 输出一个字符串,抑制它以仅获取记录器实例:

function UseLogger ($name, $path) {
    Start-Transcript -Path "$Path" -Append -NoClobber |Out-Null
    return [Logger]::New($name,$path)
}