我正在尝试将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]
但这是我要避免的额外步骤。
答案 0 :(得分:1)
我想我找到了解决方法。
移动
[Reflection.Assembly]::LoadFile("C:\Program Files\WindowsPowerShell\Modules\ToolsTest\nlog.dll")
功能外,解决了问题。我不确定为什么,但是现在可以了。