internal PSEventSubscriber( ExecutionContext context, int id, object source, string eventName, string sourceIdentifier, ScriptBlock action, bool supportEvent, bool forwardEvent) : this(context, id, source, eventName, sourceIdentifier, supportEvent, forwardEvent) { if (action == null) { return; } ScriptBlock boundScriptBlock = context.Modules.CreateBoundScriptBlock(action, true); PSVariable psVariable = new PSVariable("script:Error", (object)new ArrayList(), ScopedItemOptions.Constant); SessionStateInternal sessionStateInternal = boundScriptBlock.SessionStateInternal; sessionStateInternal.GetScopeByID("script").SetVariable(psVariable.Name, (object)psVariable, false, true, sessionStateInternal, CommandOrigin.Internal); this.action = new PSEventJob((PSEventManager)context.Events, this, boundScriptBlock, sourceIdentifier); if (supportEvent) { return; } ((LocalRunspace)context.CurrentRunspace).JobRepository.Add((Job)this.action); }
private ScriptBlock CreateBoundScriptBlock(ScriptBlock scriptAction) { ScriptBlock block = this.context.Modules.CreateBoundScriptBlock(this.context, scriptAction, true); PSVariable variable = new PSVariable("script:Error", new ArrayList(), ScopedItemOptions.Constant); SessionStateInternal sessionStateInternal = block.SessionStateInternal; sessionStateInternal.GetScopeByID("script").SetVariable(variable.Name, variable, false, true, sessionStateInternal, CommandOrigin.Internal, false); return(block); }