Exemple #1
0
        private async Task <VariableContainerDetails> FetchVariableContainer(
            string scope,
            VariableContainerDetails autoVariables)
        {
            PSCommand psCommand = new PSCommand();

            psCommand.AddCommand("Get-Variable");
            psCommand.AddParameter("Scope", scope);

            var scopeVariableContainer =
                new VariableContainerDetails("Scope: " + scope);

            _variables.Add(scopeVariableContainer);

            var results = await ExecuteCommand <PSVariable>(psCommand);

            if (results != null)
            {
                foreach (PSVariable psvariable in results)
                {
                    var variableDetails = new VariableDetails(psvariable); // { Id = this.nextVariableId++ };
                    _variables.Add(variableDetails);
                    scopeVariableContainer.Children.Add(variableDetails);  //.Add(variableDetails.Name, variableDetails);

                    if ((autoVariables != null) && AddToAutoVariables(psvariable, scope))
                    {
                        autoVariables.Children.Add(variableDetails); //(variableDetails.Name, variableDetails);
                    }
                }
            }

            return(scopeVariableContainer);
        }
Exemple #2
0
        private async Task FetchStackFrames()
        {
            var psCommand = new PSCommand();

            psCommand.AddScript("return Get-PSCallStack");

            var results = await ExecuteCommand <CallStackFrame>(psCommand);

            var callStackFrames   = results.ToArray();
            var stackFrameDetails = new List <StackFrameDetails>();

            //_stackFrameDetails = new StackFrameDetails[callStackFrames.Length];

            for (var i = 0; i < callStackFrames.Length; i++)
            {
                var autoVariables =
                    new VariableContainerDetails(
                        VariableContainerDetails.AutoVariablesName);

                _variables.Add(autoVariables);

                try
                {
                    var localVariables =
                        await FetchVariableContainer(i.ToString(), autoVariables);

                    stackFrameDetails.Add(
                        StackFrameDetails.Create(callStackFrames[i], autoVariables, localVariables));
                }
                catch (Exception) { }
            }

            _stackFrameDetails = stackFrameDetails.ToArray();
        }
Exemple #3
0
        private async Task FetchGlobalAndScriptVariables()
        {
            // Retrieve globals first as script variable retrieval needs to search globals.
            _globalScopeVariables =
                await FetchVariableContainer(VariableContainerDetails.GlobalScopeName, null);

            _scriptScopeVariables =
                await FetchVariableContainer(VariableContainerDetails.ScriptScopeName, null);
        }
 public static StackFrameDetails Create(
     CallStackFrame callStackFrame,
     VariableContainerDetails autoVariables,
     VariableContainerDetails localVariables)
 {
     return(new StackFrameDetails
     {
         ScriptPath = callStackFrame.ScriptName ?? "<No File>",
         FunctionName = callStackFrame.FunctionName,
         LineNumber = callStackFrame.Position.StartLineNumber,
         ColumnNumber = callStackFrame.Position.StartColumnNumber,
         AutoVariables = autoVariables,
         LocalVariables = localVariables
     });
 }
 public static StackFrameDetails Create(
     CallStackFrame callStackFrame,
     VariableContainerDetails autoVariables,
     VariableContainerDetails localVariables)
 {
     return new StackFrameDetails
     {
         ScriptPath = callStackFrame.ScriptName ?? "<No File>",
         FunctionName = callStackFrame.FunctionName,
         LineNumber = callStackFrame.Position.StartLineNumber,
         ColumnNumber = callStackFrame.Position.StartColumnNumber,
         AutoVariables = autoVariables,
         LocalVariables = localVariables
     };
 }