private Collection <PSObject> InvokeScript(ScriptBlock sb, bool useNewScope, PipelineResultTypes writeToPipeline, IList input, params object[] args) { object obj2; if (this._cmdlet != null) { this._cmdlet.ThrowIfStopping(); } Cmdlet contextCmdlet = null; ScriptBlock.ErrorHandlingBehavior writeToExternalErrorPipe = ScriptBlock.ErrorHandlingBehavior.WriteToExternalErrorPipe; if ((writeToPipeline & PipelineResultTypes.Output) == PipelineResultTypes.Output) { contextCmdlet = this._cmdlet; writeToPipeline &= ~PipelineResultTypes.Output; } if ((writeToPipeline & PipelineResultTypes.Error) == PipelineResultTypes.Error) { writeToExternalErrorPipe = ScriptBlock.ErrorHandlingBehavior.WriteToCurrentErrorPipe; writeToPipeline &= ~PipelineResultTypes.Error; } if (writeToPipeline != PipelineResultTypes.None) { throw PSTraceSource.NewNotImplementedException(); } if (contextCmdlet != null) { sb.InvokeUsingCmdlet(contextCmdlet, useNewScope, writeToExternalErrorPipe, AutomationNull.Value, input, AutomationNull.Value, args); obj2 = AutomationNull.Value; } else { obj2 = sb.DoInvokeReturnAsIs(useNewScope, writeToExternalErrorPipe, AutomationNull.Value, input, AutomationNull.Value, args); } if (obj2 == AutomationNull.Value) { return(new Collection <PSObject>()); } Collection <PSObject> collection = obj2 as Collection <PSObject>; if (collection == null) { collection = new Collection <PSObject>(); IEnumerator enumerator = null; enumerator = LanguagePrimitives.GetEnumerator(obj2); if (enumerator != null) { while (enumerator.MoveNext()) { object current = enumerator.Current; collection.Add(LanguagePrimitives.AsPSObjectOrNull(current)); } return(collection); } collection.Add(LanguagePrimitives.AsPSObjectOrNull(obj2)); } return(collection); }
private Collection <PSObject> InvokeScript(ScriptBlock sb, bool useNewScope, PipelineResultTypes writeToPipeline, IList input, params object[] args) { if (_cmdlet != null) { _cmdlet.ThrowIfStopping(); } Cmdlet cmdletToUse = null; ScriptBlock.ErrorHandlingBehavior errorHandlingBehavior = ScriptBlock.ErrorHandlingBehavior.WriteToExternalErrorPipe; // Check if they want output if ((writeToPipeline & PipelineResultTypes.Output) == PipelineResultTypes.Output) { cmdletToUse = _cmdlet; writeToPipeline &= (~PipelineResultTypes.Output); } // Check if they want error if ((writeToPipeline & PipelineResultTypes.Error) == PipelineResultTypes.Error) { errorHandlingBehavior = ScriptBlock.ErrorHandlingBehavior.WriteToCurrentErrorPipe; writeToPipeline &= (~PipelineResultTypes.Error); } if (writeToPipeline != PipelineResultTypes.None) { // The only output types are Output and Error. throw PSTraceSource.NewNotImplementedException(); } // If the cmdletToUse is not null, then the result of the evaluation will be // streamed out the output pipe of the cmdlet. object rawResult; if (cmdletToUse != null) { sb.InvokeUsingCmdlet( contextCmdlet: cmdletToUse, useLocalScope: useNewScope, errorHandlingBehavior: errorHandlingBehavior, dollarUnder: AutomationNull.Value, input: input, scriptThis: AutomationNull.Value, args: args); rawResult = AutomationNull.Value; } else { rawResult = sb.DoInvokeReturnAsIs( useLocalScope: useNewScope, errorHandlingBehavior: errorHandlingBehavior, dollarUnder: AutomationNull.Value, input: input, scriptThis: AutomationNull.Value, args: args); } if (rawResult == AutomationNull.Value) { return(new Collection <PSObject>()); } // If the result is already a collection of PSObjects, just return it... Collection <PSObject> result = rawResult as Collection <PSObject>; if (result != null) { return(result); } result = new Collection <PSObject>(); IEnumerator list = null; list = LanguagePrimitives.GetEnumerator(rawResult); if (list != null) { while (list.MoveNext()) { object val = list.Current; result.Add(LanguagePrimitives.AsPSObjectOrNull(val)); } } else { result.Add(LanguagePrimitives.AsPSObjectOrNull(rawResult)); } return(result); }
private Collection<PSObject> InvokeScript(ScriptBlock sb, bool useNewScope, PipelineResultTypes writeToPipeline, IList input, params object[] args) { object obj2; if (this._cmdlet != null) { this._cmdlet.ThrowIfStopping(); } Cmdlet contextCmdlet = null; ScriptBlock.ErrorHandlingBehavior writeToExternalErrorPipe = ScriptBlock.ErrorHandlingBehavior.WriteToExternalErrorPipe; if ((writeToPipeline & PipelineResultTypes.Output) == PipelineResultTypes.Output) { contextCmdlet = this._cmdlet; writeToPipeline &= ~PipelineResultTypes.Output; } if ((writeToPipeline & PipelineResultTypes.Error) == PipelineResultTypes.Error) { writeToExternalErrorPipe = ScriptBlock.ErrorHandlingBehavior.WriteToCurrentErrorPipe; writeToPipeline &= ~PipelineResultTypes.Error; } if (writeToPipeline != PipelineResultTypes.None) { throw PSTraceSource.NewNotImplementedException(); } if (contextCmdlet != null) { sb.InvokeUsingCmdlet(contextCmdlet, useNewScope, writeToExternalErrorPipe, AutomationNull.Value, input, AutomationNull.Value, args); obj2 = AutomationNull.Value; } else { obj2 = sb.DoInvokeReturnAsIs(useNewScope, writeToExternalErrorPipe, AutomationNull.Value, input, AutomationNull.Value, args); } if (obj2 == AutomationNull.Value) { return new Collection<PSObject>(); } Collection<PSObject> collection = obj2 as Collection<PSObject>; if (collection == null) { collection = new Collection<PSObject>(); IEnumerator enumerator = null; enumerator = LanguagePrimitives.GetEnumerator(obj2); if (enumerator != null) { while (enumerator.MoveNext()) { object current = enumerator.Current; collection.Add(LanguagePrimitives.AsPSObjectOrNull(current)); } return collection; } collection.Add(LanguagePrimitives.AsPSObjectOrNull(obj2)); } return collection; }
private Collection<PSObject> InvokeScript(ScriptBlock sb, bool useNewScope, PipelineResultTypes writeToPipeline, IList input, params object[] args) { if (null != _cmdlet) _cmdlet.ThrowIfStopping(); Cmdlet cmdletToUse = null; ScriptBlock.ErrorHandlingBehavior errorHandlingBehavior = ScriptBlock.ErrorHandlingBehavior.WriteToExternalErrorPipe; // Check if they want output if ((writeToPipeline & PipelineResultTypes.Output) == PipelineResultTypes.Output) { cmdletToUse = _cmdlet; writeToPipeline &= (~PipelineResultTypes.Output); } // Check if they want error if ((writeToPipeline & PipelineResultTypes.Error) == PipelineResultTypes.Error) { errorHandlingBehavior = ScriptBlock.ErrorHandlingBehavior.WriteToCurrentErrorPipe; writeToPipeline &= (~PipelineResultTypes.Error); } if (writeToPipeline != PipelineResultTypes.None) { // The only output types are Output and Error. throw PSTraceSource.NewNotImplementedException(); } // If the cmdletToUse is not null, then the result of the evaluation will be // streamed out the output pipe of the cmdlet. object rawResult; if (cmdletToUse != null) { sb.InvokeUsingCmdlet( contextCmdlet: cmdletToUse, useLocalScope: useNewScope, errorHandlingBehavior: errorHandlingBehavior, dollarUnder: AutomationNull.Value, input: input, scriptThis: AutomationNull.Value, args: args); rawResult = AutomationNull.Value; } else { rawResult = sb.DoInvokeReturnAsIs( useLocalScope: useNewScope, errorHandlingBehavior: errorHandlingBehavior, dollarUnder: AutomationNull.Value, input: input, scriptThis: AutomationNull.Value, args: args); } if (rawResult == AutomationNull.Value) { return new Collection<PSObject>(); } // If the result is already a collection of PSObjects, just return it... Collection<PSObject> result = rawResult as Collection<PSObject>; if (result != null) return result; result = new Collection<PSObject>(); IEnumerator list = null; list = LanguagePrimitives.GetEnumerator(rawResult); if (list != null) { while (list.MoveNext()) { object val = list.Current; result.Add(LanguagePrimitives.AsPSObjectOrNull(val)); } } else { result.Add(LanguagePrimitives.AsPSObjectOrNull(rawResult)); } return result; }