これは古いWMI(Windows Management Instrumentation)の問題です。クラスに[InstrumentationClass(InstrumentationType.Instance)]というタグを付けるとうまく動作します。しかし、私が[InstrumentationClass(InstrumentationType.Event)]でそれを行うと、それはしません。 私はこのようなインスタレーションクラスを作成しました:WMIがFireを表示できないときにInstrumentationClass(InstrumentationType.Event)として登録されています
[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" });
これは機能します。火
[InstrumentationClass(InstrumentationType.Event)]
public class InstrumentationWarning
{
public string VirtualHost;
public string Queue;
public string Message;
}
そして呼び出します: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
をしかし、私はイベントでこれを行う場合、
Instrumentation.Fire(new InstrumentationWarning()
{ VirtualHost = virtualHost, Queue = queue, Message = message });
これは、PowerShellのいずれかのツールをチェックWMIにeather示したことがありません:
PS C:\Users\ARipollJ> get-wmiobject -namespace "Root/RabbitMQMonitor" -class InstrumentationWarning
PS C:\Users\ARipollJ>
Aclarat ion:インスタンスはパブリッシュ、イベントはファイアウォール。私はすでに試してみましたが、それはうまく動作しませんでした。私は本当にこれと積み重なっています。私は本当にそれにいくつかの光を感謝します。
[登録](https://technet.microsoft.com/de-de/library/hh849840.aspx)ではなく、「get-wmiobject」でイベントを受信しようとしているようです。 – Clijsters