Powershell模块中的LogManager.GetLogger返回多个对象

问题描述 投票:1回答:1

我试图将nlog.dll包装在一个模块中,以便我可以将该机制重用于多个脚本。

在模块中我这样做:

Set-StrictMode -Version Latest

function Get-NewLoggerTest() {
    [CmdletBinding(SupportsShouldProcess=$true)]
    Param (
        [Parameter(Mandatory=$true,HelpMessage="Provide the name of the logger.")]
        [string]$loggerName
    )

    [Reflection.Assembly]::LoadFile("C:\Program Files\WindowsPowerShell\Modules\ToolsTest\nlog.dll")

    # Creater logger object
    $logger = [NLog.LogManager]::GetLogger($loggerName)

    return $logger
}

Export-ModuleMember -Function Get-NewLoggerTest

现在我通过发出以下命令创建一个新的记录器

Import-Module ToolsTest -Force
# Create a new logger
$logNew = Get-NewLoggerTest -loggerName "TEST Logger"

我现在的问题是我必须使用引用日志对象

$logNew[1].Debug("Debug Message")

$logNew.Debug返回错误,因为不知何故返回了多个对象。

如果我做了

$newLog | gm

它返回多个类型名称:

TypeName: System.Reflection.RuntimeAssembly
TypeName: NLog.Logger

我只关心NLog一个,任何想法我怎么能摆脱另一个?

当然我可以重新分配它

$logNew = $logNew[1]

但这是我想避免的额外步骤。

powershell module nlog
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.