- 在PowerShell V1中,最大调用深度为 100:
使用.NET ReflectorSystem.Management.ExecutionContext
,我们可以从类代码中看到这个片段,
internal int IncrementScopeDepth()
{
using (IDisposable disposable = tracer.TraceMethod("{0}", new object[] { this.scopeDepth }))
{
if (this.CurrentPipelineStopping)
{
throw new PipelineStoppedException();
}
this.scopeDepth++;
if (this.scopeDepth > 100)
{
ScriptCallDepthException exceptionRecord = new
ScriptCallDepthException(this.scopeDepth, 100);
tracer.TraceException(exceptionRecord);
throw exceptionRecord;
}
return this.scopeDepth;
}
}
无法修改硬编码的 100。
- 在PowerShell V2中,最大调用深度为 1000
再次查看代码时,似乎没有办法绕过默认的最大调用深度。
- 在PowerShell V3 (CTP)中,似乎没有最大调用深度(当然,除非您用完资源)。此行为已被描述为连接上的错误,因此它可能会在最终版本中更改。