public override string Excute(MainComTerminalExpression command, string outputMass)
        {
            //object[] outputMass = null;
            //int a = 0;
            //if (command.ParameterList.Count == 0)
            //{
            //    outputMass = DefaultGetProcess();
            //}
            //else
            //{
            //    outputMass = ExcuteWithParameters(command, outputMass);
            //    a = 1;
            //}
            //return outputMass;

            // create Powershell runspace
            Runspace runspace = RunspaceFactory.CreateRunspace();

            // open it
            runspace.Open();

            // create a pipeline and feed it the script text
            Pipeline pipeline = runspace.CreatePipeline();

            StringBuilder sb = new StringBuilder(command.Noun.Name);
            sb.Append("-");
            sb.Append(command.Verb.Name);
            sb.Append(" ");
            for(int i=0;i<command.ParameterList.Count;i++)
            {
                sb.Append("-");
                sb.Append(command.ParameterList.ElementAt(i).NameParam);
                sb.Append(" ");
                sb.Append(command.ParameterList.ElementAt(i).ParamValue);
                sb.Append(" ");
            }

            pipeline.Commands.AddScript(sb.ToString());

            // add an extra command to transform the script output objects into nicely formatted strings
            // remove this line to get the actual objects that the script returns. For example, the script
            // "Get-Process" returns a collection of System.Diagnostics.Process instances.
            pipeline.Commands.Add("Out-String");

            // execute the script
            Collection<PSObject> results = pipeline.Invoke();

            // close the runspace
            runspace.Close();

            // convert the script result into a single string
            StringBuilder stringBuilder = new StringBuilder();
            foreach (PSObject obj in results)
            {
                stringBuilder.AppendLine(obj.ToString());
            }

            return outputMass=stringBuilder.ToString();
        }
 public override string Excute(MainComTerminalExpression command, string outputMass)
 {
     BreadthFirstIterator iterator = new BreadthFirstIterator(this.ScriptCommand);
     StringBuilder sb = new StringBuilder(outputMass);
     //object[] outputMass = null;
     while (iterator.List.Count != 0)
     {
         if (!Char.IsUpper(((MainComTerminalExpression)iterator.List.ElementAt(iterator.List.Count - 1)).Noun.Name[0]) && !Char.IsUpper(((MainComTerminalExpression)iterator.List.ElementAt(iterator.List.Count - 1)).Verb.Name[0]))
         {
             char.ToUpper(((MainComTerminalExpression)iterator.List.ElementAt(iterator.List.Count - 1)).Noun.Name[0]);
             char.ToUpper(((MainComTerminalExpression)iterator.List.ElementAt(iterator.List.Count - 1)).Verb.Name[0]);
         }
         StringBuilder str = new StringBuilder(((MainComTerminalExpression)iterator.List.ElementAt(iterator.List.Count - 1)).Noun.Name);
         str.Append(((MainComTerminalExpression)iterator.List.ElementAt(iterator.List.Count - 1)).Verb.Name);
         string nameCommand = str.ToString();
         Type T = Type.GetType("PSterminal." + nameCommand+"Command");
         object Obj = Activator.CreateInstance(T);
         outputMass = ((Command)Obj).Excute((MainComTerminalExpression)iterator.List.ElementAt(iterator.List.Count - 1),outputMass);
         iterator.List.RemoveAt(iterator.List.Count - 1);
         sb.Append("\n\n");
         sb.Append(outputMass);
     }
     return sb.ToString();
 }
 private object[] ExcuteWithParameters(MainComTerminalExpression command, object[] outputMass)
 {
     //object[] outputMass = null;
     List<ParamTerminalExpression> parameters = command.ParameterList;
     foreach (var parameter in parameters)
     {
         if (parameter.NameParam == "name")
         {
             System.Diagnostics.Process[] process = System.Diagnostics.Process.GetProcessesByName(parameter.ParamValue);
             outputMass = new object[process.Length];
             for (int i = 0; i < outputMass.Length; i++)
             {
                 StringBuilder sb = new StringBuilder(process[i].ProcessName);
                 sb.Append(" ");
                 sb.Append(process[i].Id);
                 sb.Append(" ");
                 sb.Append(process[i].BasePriority);
                 sb.Append(" ");
                 sb.Append(process[i].StartTime);
                 outputMass[i] = sb.ToString();
             }
         }
     }
     return outputMass;
 }
Пример #4
0
 //public abstract void Excute();
 public abstract string Excute(MainComTerminalExpression command,string massObject);