Я пытаюсь обернуть файл 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]
, но я хочу избежать этого дополнительного шага.