本文整理汇总了C#中System.Management.Automation.ScriptBlock.DoInvokeReturnAsIs方法的典型用法代码示例。如果您正苦于以下问题:C# ScriptBlock.DoInvokeReturnAsIs方法的具体用法?C# ScriptBlock.DoInvokeReturnAsIs怎么用?C# ScriptBlock.DoInvokeReturnAsIs使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Management.Automation.ScriptBlock
的用法示例。
在下文中一共展示了ScriptBlock.DoInvokeReturnAsIs方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: InvokeScript
private static object InvokeScript(string methodName, ScriptBlock script, object @this, object[] arguments)
{
object obj2;
try
{
obj2 = script.DoInvokeReturnAsIs(true, ScriptBlock.ErrorHandlingBehavior.WriteToExternalErrorPipe, AutomationNull.Value, AutomationNull.Value, @this, arguments);
}
catch (SessionStateOverflowException exception)
{
throw new MethodInvocationException("ScriptMethodSessionStateOverflowException", exception, ExtendedTypeSystem.MethodInvocationException, new object[] { methodName, arguments.Length, exception.Message });
}
catch (RuntimeException exception2)
{
throw new MethodInvocationException("ScriptMethodRuntimeException", exception2, ExtendedTypeSystem.MethodInvocationException, new object[] { methodName, arguments.Length, exception2.Message });
}
catch (TerminateException)
{
throw;
}
catch (FlowControlException exception3)
{
throw new MethodInvocationException("ScriptMethodFlowControlException", exception3, ExtendedTypeSystem.MethodInvocationException, new object[] { methodName, arguments.Length, exception3.Message });
}
catch (PSInvalidOperationException exception4)
{
throw new MethodInvocationException("ScriptMethodInvalidOperationException", exception4, ExtendedTypeSystem.MethodInvocationException, new object[] { methodName, arguments.Length, exception4.Message });
}
return obj2;
}
示例2: InvokeScript
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;
}
示例3: InvokeScript
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;
}