Это вопрос о старой инструментарии управления Windows (WMI), которую я не могу понять. Если я помечаю класс как [InstrumentationClass (InstrumentationType.Instance)], он отлично работает. Но если я это сделаю с помощью [InstrumentationClass (InstrumentationType.Event)], это не так. Я создал класс инсталяция так:WMI зарегистрирован как InstrumentationClass (InstrumentationType.Event), когда Fire я не вижу его
[assembly: Instrumented(@"Root\RabbitMQMonitor")]
namespace RabbitMQMonitor.Services
{
[RunInstaller(true)]
public class Installer4WMI : DefaultManagementProjectInstaller { }
}
Тогда я помеченный этот класс так:
[InstrumentationClass(InstrumentationType.Instance)]
public class JustToSeeInstances
{
public string Message;
}
Тогда я зарегистрировать его с помощью Eather InstallUtill.exe или в коде вызова:
Instrumentation.RegisterAssembly(Assembly.GetExecutingAssembly());
Когда я звоню Опубликовать:
Instrumentation.Publish(new JustToSeeInstances()
{ Message = "Instrumentation.Fire(new InstrumentationWarning() executed" });
И это работает. В PowerShell:
PS C:\Users\ARipollJ> get-wmiobject -namespace "Root/RabbitMQMonitor" -class JustToSeeInstances
__GENUS : 2
__CLASS : JustToSeeInstances
__SUPERCLASS :
__DYNASTY : JustToSeeInstances
__RELPATH : JustToSeeInstances.InstanceId="3839",ProcessId="da1d1658-84aa-4394-b0d8-b80ceddfecc7"
__PROPERTY_COUNT : 3
__DERIVATION : {}
__SERVER : W7TC2I198DTECN
__NAMESPACE : Root\RabbitMQMonitor
__PATH : \\W7TC2I198DTECN\Root\RabbitMQMonitor:JustToSeeInstances.InstanceId="3839",ProcessId="da1d1658-84aa-
4394-b0d8-b80ceddfecc7"
InstanceId : 3839
Message : Instrumentation.Fire(new InstrumentationWarning() executed
ProcessId : da1d1658-84aa-4394-b0d8-b80ceddfecc7
НО, если я делаю это с событием:
[InstrumentationClass(InstrumentationType.Event)]
public class InstrumentationWarning
{
public string VirtualHost;
public string Queue;
public string Message;
}
А затем вызвать Fire:
Instrumentation.Fire(new InstrumentationWarning()
{ VirtualHost = virtualHost, Queue = queue, Message = message });
Он никогда Eather показывает в WMI проверки инструмента либо в PowerShell :
PS C:\Users\ARipollJ> get-wmiobject -namespace "Root/RabbitMQMonitor" -class InstrumentationWarning
PS C:\Users\ARipollJ>
Aclarat ion: Опубликовать для экземпляров и Fire для событий. Я уже перешел, чтобы попробовать, и это не работало. Я действительно уложился в это. Я бы очень признателен за освещение.
Кажется, что вы пытаетесь получать события с помощью 'get-wmiobject' вместо [регистрации на них] (https://technet.microsoft.com/de-de/library/hh849840.aspx). – Clijsters