forked from PowerShell/PowerShell
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathNewEventCommand.cs
More file actions
133 lines (113 loc) · 3.35 KB
/
Copy pathNewEventCommand.cs
File metadata and controls
133 lines (113 loc) · 3.35 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
using System;
using System.Diagnostics.CodeAnalysis;
using System.Management.Automation;
namespace Microsoft.PowerShell.Commands
{
/// <summary>
/// Generates a new event notification.
/// </summary>
[Cmdlet(VerbsCommon.New, "Event", HelpUri = "https://go.microsoft.com/fwlink/?LinkID=2096708")]
[OutputType(typeof(PSEventArgs))]
public class NewEventCommand : PSCmdlet
{
#region parameters
/// <summary>
/// Adds an event to the event queue.
/// </summary>
[Parameter(Position = 0, Mandatory = true)]
public string SourceIdentifier
{
get
{
return _sourceIdentifier;
}
set
{
_sourceIdentifier = value;
}
}
private string _sourceIdentifier = null;
/// <summary>
/// Data relating to this event.
/// </summary>
[Parameter(Position = 1)]
[SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays")]
public PSObject Sender
{
get
{
return _sender;
}
set
{
_sender = value;
}
}
private PSObject _sender = null;
/// <summary>
/// Data relating to this event.
/// </summary>
[Parameter(Position = 2)]
[SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays")]
public PSObject[] EventArguments
{
get
{
return _eventArguments;
}
set
{
if (_eventArguments != null)
{
_eventArguments = value;
}
}
}
private PSObject[] _eventArguments = Array.Empty<PSObject>();
/// <summary>
/// Data relating to this event.
/// </summary>
[Parameter(Position = 3)]
public PSObject MessageData
{
get
{
return _messageData;
}
set
{
_messageData = value;
}
}
private PSObject _messageData = null;
#endregion parameters
/// <summary>
/// Add the event to the event queue.
/// </summary>
protected override void EndProcessing()
{
object[] baseEventArgs = null;
// Get the BaseObject from the event arguments
if (_eventArguments != null)
{
baseEventArgs = new object[_eventArguments.Length];
int loopCounter = 0;
foreach (PSObject eventArg in _eventArguments)
{
if (eventArg != null)
baseEventArgs[loopCounter] = eventArg.BaseObject;
loopCounter++;
}
}
object messageSender = null;
if (_sender != null)
{
messageSender = _sender.BaseObject;
}
// And then generate the event
WriteObject(Events.GenerateEvent(_sourceIdentifier, messageSender, baseEventArgs, _messageData, true, false));
}
}
}