public void ValidateScriptInfo(PSHost host) { if (!this._signatureChecked) { System.Management.Automation.ExecutionContext context = base.Context ?? LocalPipeline.GetExecutionContextFromTLS(); this.ReadScriptContents(); if (context != null) { CommandDiscovery.ShouldRun(context, host, this, CommandOrigin.Internal); this._signatureChecked = true; } } }
/// <summary> /// Validates the external script info. /// </summary> /// <param name="host"></param> public void ValidateScriptInfo(Host.PSHost host) { if (!_signatureChecked) { ExecutionContext context = Context ?? LocalPipeline.GetExecutionContextFromTLS(); ReadScriptContents(); // We have no way to check the signature w/o context because we don't have // an AuthorizationManager. This can happen during initialization when trying // to get the CommandMetadata for a script (either to prepopulate the metadata // or creating a proxy). If context can be null under any other circumstances, // we need to make sure it's acceptable if the parser is invoked on unsigned scripts. if (context != null) { CommandDiscovery.ShouldRun(context, host, this, CommandOrigin.Internal); _signatureChecked = true; } } }
internal CommandProcessorBase LookupCommandProcessor( CommandInfo commandInfo, CommandOrigin commandOrigin, bool?useLocalScope) { if (commandInfo.CommandType == CommandTypes.Alias && (commandOrigin == CommandOrigin.Internal || commandInfo.Visibility == SessionStateEntryVisibility.Public)) { AliasInfo aliasInfo = (AliasInfo)commandInfo; commandInfo = aliasInfo.ResolvedCommand; if (commandInfo == null) { CommandNotFoundException notFoundException = new CommandNotFoundException(aliasInfo.Name, (Exception)null, "AliasNotResolvedException", new object[1] { (object)aliasInfo.UnresolvedCommandName }); CommandDiscovery.tracer.TraceException((Exception)notFoundException); throw notFoundException; } PSSQMAPI.IncrementData(CommandTypes.Alias); } CommandDiscovery.ShouldRun(this._context, (PSHost)this._context.EngineHostInterface, commandInfo, commandOrigin); CommandProcessorBase commandProcessorBase; switch (commandInfo.CommandType) { case CommandTypes.Function: case CommandTypes.Filter: FunctionInfo functionInfo = (FunctionInfo)commandInfo; ExecutionContext context1 = this._context; bool? nullable1 = useLocalScope; int num1 = nullable1.HasValue ? (nullable1.GetValueOrDefault() ? 1 : 0) : 1; commandProcessorBase = CommandDiscovery.CreateCommandProcessorForScript(functionInfo, context1, num1 != 0); break; case CommandTypes.Cmdlet: commandProcessorBase = (CommandProcessorBase) new CommandProcessor((CmdletInfo)commandInfo, this._context); break; case CommandTypes.ExternalScript: ExternalScriptInfo externalScriptInfo = (ExternalScriptInfo)commandInfo; externalScriptInfo.SignatureChecked = true; try { if (!this._context.IsSingleShell) { ExternalScriptInfo scriptInfo = externalScriptInfo; bool?nullable2 = useLocalScope; int num2 = nullable2.HasValue ? (nullable2.GetValueOrDefault() ? 1 : 0) : 1; commandProcessorBase = this.CreateScriptProcessorForMiniShell(scriptInfo, num2 != 0); break; } ExternalScriptInfo scriptInfo1 = externalScriptInfo; RunspaceConfigForSingleShell runspaceConfiguration = this._context.RunspaceConfiguration as RunspaceConfigForSingleShell; bool?nullable3 = useLocalScope; int num3 = nullable3.HasValue ? (nullable3.GetValueOrDefault() ? 1 : 0) : 1; commandProcessorBase = this.CreateScriptProcessorForSingleShell(scriptInfo1, runspaceConfiguration, num3 != 0); break; } catch (ScriptRequiresSyntaxException ex) { CommandNotFoundException notFoundException = new CommandNotFoundException(ex.Message, (Exception)ex); CommandDiscovery.tracer.TraceException((Exception)notFoundException); throw notFoundException; } catch (PSArgumentException ex) { CommandNotFoundException notFoundException = new CommandNotFoundException(commandInfo.Name, (Exception)ex, "ScriptRequiresInvalidFormat", new object[0]); CommandDiscovery.tracer.TraceException((Exception)notFoundException); throw notFoundException; } case CommandTypes.Application: commandProcessorBase = (CommandProcessorBase) new NativeCommandProcessor((ApplicationInfo)commandInfo, this._context); break; case CommandTypes.Script: ScriptInfo scriptInfo2 = (ScriptInfo)commandInfo; ExecutionContext context2 = this._context; bool? nullable4 = useLocalScope; int num4 = nullable4.HasValue ? (nullable4.GetValueOrDefault() ? 1 : 0) : 1; commandProcessorBase = CommandDiscovery.CreateCommandProcessorForScript(scriptInfo2, context2, num4 != 0); break; default: CommandNotFoundException notFoundException1 = new CommandNotFoundException(commandInfo.Name, (Exception)null, "CommandNotFoundException", new object[0]); CommandDiscovery.tracer.TraceException((Exception)notFoundException1); throw notFoundException1; } PSSQMAPI.IncrementData(commandInfo.CommandType); commandProcessorBase.Command.CommandOriginInternal = commandOrigin; commandProcessorBase.Command.MyInvocation.InvocationName = commandInfo.Name; return(commandProcessorBase); }