2016-04-20 8 views
0

これは古い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:インスタンスはパブリッシュ、イベントはファイアウォール。私はすでに試してみましたが、それはうまく動作しませんでした。私は本当にこれと積み重なっています。私は本当にそれにいくつかの光を感謝します。

+0

[登録](https://technet.microsoft.com/de-de/library/hh849840.aspx)ではなく、「get-wmiobject」でイベントを受信しようとしているようです。 – Clijsters

答えて

0

Clijstersに感謝します。それはそれでした:

私は私のイベントに登録する場合。 PowerShellの:ここに

PS C:\Users\ARipollJ> Get-Event 


ComputerName  : 
RunspaceId  : fc02e8ce-849e-473e-b5b9-d5eac39eb130 
EventIdentifier : 1 
Sender   : System.Management.ManagementEventWatcher 
SourceEventArgs : System.Management.EventArrivedEventArgs 
SourceArgs  : {System.Management.ManagementEventWatcher, System.Management.EventArrivedEventArgs} 
SourceIdentifier : 1e87f848-276b-447d-bbb0-c985dc27b347 
TimeGenerated : 20/04/2016 11:39:37 
MessageData  : 

ComputerName  : 
RunspaceId  : fc02e8ce-849e-473e-b5b9-d5eac39eb130 
EventIdentifier : 2 
Sender   : System.Management.ManagementEventWatcher 
SourceEventArgs : System.Management.EventArrivedEventArgs 
SourceArgs  : {System.Management.ManagementEventWatcher, System.Management.EventArrivedEventArgs} 
SourceIdentifier : 1e87f848-276b-447d-bbb0-c985dc27b347 
TimeGenerated : 20/04/2016 11:40:03 
MessageData  : 

彼らは、次のとおりです。

PS C:\Users\ARipollJ> register-wmiEvent -class 'InstrumentarionWarning' 

は、その後、私は "ゲット・イベント" を使用し、それInstrumentation.Fire!

関連する問題