PowerShell的:我如何通过一个log4net的对象到后台作业?
-
22-09-2019 - |
题
我可能会尝试一个无效的方法,所以我接受任何建议。
我跑了一系列的3个脚本,每个IIS服务器上做的网站进行分析,并且我跑他们对几百服务器。我验证的概念阶段,这样做的启动工作进程,所以我可以并行运行,并更快地完成了很多。这些脚本主要是在附近等WMI和文件系统来收集和返回数据,所以并行等待使得有很大的意义。
但我不能让我的工作日志。我在管道中的数据行的脚本,并尝试发送log4net的$记录仪作为一个参数,而是新的PowerShell进程不能用它做任何事情。以下是我已经试过: (在调用脚本) $作业+ =启动工作-InputObject $应用-FilePath $命令-Name $ app.Name -ArgumentList $登录
(在调用的脚本)
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'
我也试过只是在调用的脚本流程中实例化一个新的$记录器,以及在做一些日志作用的结果,但不准确。 20个过程中,我只是从他们那里得到的9一些消息,并且从没有所有消息。
不记录是不是一个选项。这项工作是复杂的。运行该脚本的每个实例不同的日志可能是可行的,但它会是一个讨厌,讨厌讨厌。大多数情况下,我只图我做的事情不知情。
解决方案
每个催生PowerShell进程是它自己的存储空间。没有什么是他们之间共享,这样问log4net的安全操作的文件系统日志中多次产生的作业是一个失败。数据库或事件日志记录把手的安全问题,并适当地解决这个问题。
不隶属于 StackOverflow