Beispiel #1
0
        public static IEnumerable<string> ExecutePowershellCommand(this Robot robot, string command)
        {
            var host = new MMBotHost(robot);
            using (var runspace = RunspaceFactory.CreateRunspace(host))
            {
                runspace.Open();
                using (var invoker = new RunspaceInvoke(runspace))
                {
                    Collection<PSObject> psObjects = new Collection<PSObject>();
                    try
                    {
                        IList errors;
                        psObjects = invoker.Invoke(command, null, out errors);
                        if (errors.Count > 0)
                        {
                            string errorString = string.Empty;
                            foreach (var error in errors)
                                errorString += error.ToString();

                            psObjects.Add(new PSObject(errorString));
                        }

                    }
                    catch (Exception ex)
                    {
                        psObjects.Add(new PSObject(ex.Message));
                    }

                    foreach (var psObject in psObjects)
                    {
                        yield return psObject.ConvertToString();
                    }
                }
            }
        }
Beispiel #2
0
        public static IEnumerable <string> ExecutePowershellModule(this Robot robot, string moduleCommand)
        {
            var scriptFolder = robot.GetConfigVariable("MMBOT_POWERSHELL_SCRIPTSPATH");

            var commandArgs = moduleCommand.Split(' ');
            var scriptName  = commandArgs[0];
            var parameters  = string.Empty;

            for (int i = 1; i < commandArgs.Length; i++)
            {
                parameters += commandArgs[i] + " ";
            }

            var scriptPath = Path.Combine(scriptFolder, scriptName + ".psm1");

            if (!File.Exists(scriptPath))
            {
                yield return("Command not found");
            }
            else
            {
                var host = new MMBotHost(robot);
                using (var runspace = RunspaceFactory.CreateRunspace(host))
                {
                    runspace.Open();
                    using (var invoker = new RunspaceInvoke(runspace))
                    {
                        Collection <PSObject> psObjects = new Collection <PSObject>();
                        invoker.Invoke(string.Format("Import-Module {0}", scriptPath));
                        try
                        {
                            IList errors;
                            psObjects = invoker.Invoke(string.Format("{0} {1}", scriptName, parameters), null, out errors);
                            if (errors.Count > 0)
                            {
                                string errorString = string.Empty;
                                foreach (var error in errors)
                                {
                                    errorString += error.ToString();
                                }

                                psObjects.Add(new PSObject(errorString));
                            }
                        }
                        catch (Exception ex)
                        {
                            psObjects.Add(new PSObject(ex.Message));
                        }

                        foreach (var psObject in psObjects)
                        {
                            yield return(psObject.ConvertToString());
                        }
                    }
                }
            }
        }
Beispiel #3
0
        public static IEnumerable <string> ExecutePowershellCommand(this Robot robot, string command)
        {
            var host = new MMBotHost(robot);

            using (var runspace = RunspaceFactory.CreateRunspace(host))
            {
                runspace.Open();
                using (var invoker = new RunspaceInvoke(runspace))
                {
                    Collection <PSObject> psObjects = new Collection <PSObject>();
                    try
                    {
                        IList errors;
                        psObjects = invoker.Invoke(command, null, out errors);
                        if (errors.Count > 0)
                        {
                            string errorString = string.Empty;
                            foreach (var error in errors)
                            {
                                errorString += error.ToString();
                            }

                            psObjects.Add(new PSObject(errorString));
                        }
                    }
                    catch (Exception ex)
                    {
                        psObjects.Add(new PSObject(ex.Message));
                    }

                    foreach (var psObject in psObjects)
                    {
                        yield return(psObject.ConvertToString());
                    }
                }
            }
        }
Beispiel #4
0
        public static IEnumerable<string> ExecutePowershellModule(this Robot robot, string moduleCommand)
        {
            var scriptFolder = robot.GetConfigVariable("MMBOT_POWERSHELL_SCRIPTSPATH");

            var commandArgs = moduleCommand.Split(' ');
            var scriptName = commandArgs[0];
            var parameters = string.Empty;
            for (int i = 1; i < commandArgs.Length; i++)
                parameters += commandArgs[i] + " ";

            var scriptPath = Path.Combine(scriptFolder, scriptName + ".psm1");

            if (!File.Exists(scriptPath))
            {
                yield return "Command not found";
            }
            else
            {
                var host = new MMBotHost(robot);
                using (var runspace = RunspaceFactory.CreateRunspace(host))
                {
                    runspace.Open();
                    using (var invoker = new RunspaceInvoke(runspace))
                    {
                        Collection<PSObject> psObjects = new Collection<PSObject>();
                        invoker.Invoke(string.Format("Import-Module {0}", scriptPath));
                        try
                        {
                            IList errors;
                            psObjects = invoker.Invoke(string.Format("{0} {1}", scriptName, parameters), null, out errors);
                            if (errors.Count > 0)
                            {
                                string errorString = string.Empty;
                                foreach (var error in errors)
                                    errorString += error.ToString();

                                psObjects.Add(new PSObject(errorString));
                            }

                        }
                        catch (Exception ex)
                        {
                            psObjects.Add(new PSObject(ex.Message));
                        }

                        foreach (var psObject in psObjects)
                        {
                            yield return psObject.ConvertToString();
                        }
                    }
                }
            }
            
        }