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; }
//public abstract void Excute(); public abstract string Excute(MainComTerminalExpression command,string massObject);