private void HandleStartEvent(object sender, PSEventArgs args) { ServerSteppablePipelineDriverEventArg sourceEventArgs = args.SourceEventArgs as ServerSteppablePipelineDriverEventArg; ServerSteppablePipelineDriver steppableDriver = sourceEventArgs.SteppableDriver; Exception reason = null; try { using (ExecutionContextForStepping.PrepareExecutionContext(steppableDriver.LocalPowerShell.GetContextFromTLS(), steppableDriver.LocalPowerShell.InformationalBuffers, steppableDriver.RemoteHost)) { steppableDriver.SteppablePipeline = steppableDriver.LocalPowerShell.GetSteppablePipeline(); steppableDriver.SteppablePipeline.Begin(!steppableDriver.NoInput); } if (steppableDriver.NoInput) { steppableDriver.HandleInputEndReceived(this, EventArgs.Empty); } } catch (Exception exception2) { reason = exception2; } if (reason != null) { steppableDriver.SetState(PSInvocationState.Failed, reason); } }
/// <summary> /// Handles the start pipeline event, this is called by the event manager /// </summary> /// <param name="sender"></param> /// <param name="args"></param> private void HandleStartEvent(object sender, PSEventArgs args) { ServerSteppablePipelineDriverEventArg driverArg = (object)args.SourceEventArgs as ServerSteppablePipelineDriverEventArg; ServerSteppablePipelineDriver driver = driverArg.SteppableDriver; Exception exceptionOccurred = null; try { using (ExecutionContextForStepping ctxt = ExecutionContextForStepping.PrepareExecutionContext( driver.LocalPowerShell.GetContextFromTLS(), driver.LocalPowerShell.InformationalBuffers, driver.RemoteHost)) { driver.SteppablePipeline = driver.LocalPowerShell.GetSteppablePipeline(); driver.SteppablePipeline.Begin(!driver.NoInput); } if (driver.NoInput) { driver.HandleInputEndReceived(this, EventArgs.Empty); } } catch (Exception e) { // We need to catch this so that we can set the pipeline execution; // state to "failed" and send the exception as an error to the user. // Otherwise, the event manager will swallow this exception and // cause the client to hang. exceptionOccurred = e; } if (exceptionOccurred != null) { driver.SetState(PSInvocationState.Failed, exceptionOccurred); } }