我可能正在尝试一种无效的方法,所以我愿意接受任何建议。
我正在运行一系列 3 个脚本,每个脚本都对 IIS 服务器上的网站进行分析,并且我正在针对数百台服务器运行它们。我正在将其作为 Start-Job 流程进行概念验证,因此我可以并行运行并更快地完成。这些脚本主要等待 WMI 和文件系统收集和返回数据,因此并行等待很有意义。
但我无法让我的工作记录下来。我正在将数据行传输到脚本并尝试将 Log4net $Logger 作为参数发送,但新的 Powershell 进程无法对其执行任何操作。这是我尝试过的:(在调用脚本中)$jobs += Start-Job -InputObject $app -FilePath $command -Name $app.Name -ArgumentList $Log
(在被调用的脚本中)
param ([parameter(Mandatory=$false,ValueFromPipeline=$true)]
$object,
[parameter(Position=0)]
$Logger)
(结果)
Unable to find type [log4net.ThreadContext]: make sure that the assembly containing this type is loaded.
我尝试了在被调用脚本中加载 log4net.dll 的各种方式。这导致:
Method invocation failed because [Deserialized.log4net.Core.LogImpl] doesn't contain a method named 'Info'
我还尝试在调用的脚本进程中实例化一个新的 $Logger,这确实会导致一些日志操作,但不准确。在 20 个进程中,我只收到其中 9 个进程的一些消息,而所有消息都没有。
不记录不是一种选择。工作很复杂。为脚本的每个实例运行不同的日志可能是可行的,尽管它会是一个令人讨厌的讨厌的麻烦。大多数情况下,我只是认为我在做一些不知情的事情。