/// <summary>
        /// Run the application.
        /// </summary>
        public override BoolMessageItem Execute()
        {
            // Example 1:  Non-Fluent API to configure Bootup services on startup.
            //
            // 1. Put into group called "core", parameter "core"
            // 2. With Importance as High. parameter "Importance.High"
            // 3. They must succeed without exception or the entire bootup fails. parameter "false"
            _bootup.OnStart("Authentication", "core", BootTask.Importance.High, false, (ctx) => Auth.Init(new AuthWin()));
            _bootup.OnStart("Environment", "core", BootTask.Importance.High, false, (ctx) => Env.Change("qa"));
            _bootup.OnStart("Logging Support", "core", BootTask.Importance.High, false, (ctx) => Console.WriteLine("Logging setup in call base.Init(context);"));


            // Example 2: Fluent API to configure bootup services on startup.
            //
            // 1. put into group called "myapp".
            // 2. Various levels of importance.
            _bootup.OnStart(BootTask.Named("Themes").InGroup("app").PriorityHigh.MustSucceed().ActionIs((ctx) => Console.WriteLine("Themes setup")));
            _bootup.OnStart(BootTask.Named("Widgets").InGroup("app").PriorityHigh.MustSucceed().ActionIs((ctx) => Console.WriteLine("Widgets setup")));
            _bootup.OnStart(BootTask.Named("Profiles").InGroup("app").PriorityNormal.CanFail().ActionIs((ctx) => Console.WriteLine("Profiles setup")));
            _bootup.OnStart(BootTask.Named("MVC Areas").InGroup("mvc").PriorityHigh.MustSucceed().ActionIs((ctx) => Console.WriteLine("MVC Areas setup")));
            _bootup.OnStart(BootTask.Named("MVC Routes").InGroup("mvc").PriorityHigh.MustSucceed().ActionIs((ctx) => Console.WriteLine("MVC Routes setup")));

            // Example 3: Run all Startup services.
            _bootup.StartUp(new AppContext());

            // Example 4: Run only selected startup services.
            _bootup.StartUp(new AppContext(), new string[] { "Environment", "Logging Support" });

            // Example 5: Get status info for all the tasks and write to console.
            _bootup.GetStartupStatus().ForEach(task =>
                                               Console.WriteLine(string.Format("Task Name: {0}, Group: {1}, Passed: {2}, Importance: {3}, Time: {4}",
                                                                               task.Name, task.Group, task.Success, task.Priority.ToString(), task.ExecutedOn.ToShortTimeString())));

            return(BoolMessageItem.True);
        }
示例#2
0
        private void runTaskButton_Click(object sender, RoutedEventArgs e)
        {
            Tasks.Task task;
            string     taskName = tasksBox.Text;

            switch (taskName)
            {
            case "Benchmark":
                try
                {
                    task = new BenchmarkTask(labelBox.Text, productBox.Text, parametersBox.Text, int.Parse(loopsBox.Text), ComputerWindow.SelectedComputers(), parseOSList);
                }
                catch (FormatException)
                {
                    MessageBox.Show("ERROR", "Loops is not a number!");
                    return;
                }

                break;

            case "Boot":
                task = new BootTask(ComputerWindow.SelectedComputers(), parseOSList);
                break;

            case "Reboot":
                task = new RebootTask(ComputerWindow.SelectedComputers(), parseOSList);
                break;

            case "Shutdown":
                task = new ShutdownTask(ComputerWindow.SelectedComputers(), parseOSList);
                break;

            case "Exec":
                task = new ExecTask(commandTextBox.Text, ComputerWindow.SelectedComputers(), parseOSList);
                break;

            case "Winupdate":
                task = new WinUpdateTask(ComputerWindow.SelectedComputers(), parseOSList);
                break;

            case "Update":
                task = new UpdateTask(ComputerWindow.SelectedComputers(), parseOSList);
                break;

            case "Valeta/Dandia":
                try
                {
                    task = new BatTask(zipBox.Text, outputPathcBox.Text, int.Parse(countBox.Text), modeBox.Text, (BatTask.BatType)batTypeBox.SelectedIndex, nocopyBox.IsChecked.Value, ComputerWindow.SelectedComputers(), parseOSList);
                }
                catch (FormatException)
                {
                    MessageBox.Show("ERROR", "Test count is not a number!");
                    return;
                }
                break;

            default:
                return;
            }

            List <Tuple <string, object> > parameters = task.GetJackParameters();


            PowerShell psinstance = PowerShell.Create();

            psinstance.Streams.Verbose.DataAdded  += jackInformationEventHandler;
            psinstance.Streams.Progress.DataAdded += jackProgressEventHandler;
            psinstance.Streams.Debug.DataAdded    += jackDebugEventHandler;
            psinstance.Streams.Error.DataAdded    += jackErrorEventHandler;

            //scriptInvoker.Invoke("Set-ExecutionPolicy Unrestricted Process");
            psinstance.AddCommand("Set-ExecutionPolicy");
            psinstance.AddParameter("-ExecutionPolicy", "Bypass");
            psinstance.AddCommand(SCRIPT_PATH);
            foreach (var param in parameters)
            {
                psinstance.AddParameter(param.Item1, param.Item2);
            }
            var results = psinstance.BeginInvoke();

            /*foreach (PSObject result in results)
             * {
             *  AppendOutputText(result.ToString());
             *  Console.WriteLine(result.ToString());
             * }*/
            ListBoxItem item = new ListBoxItem();

            item.Content = task.ToString();
            taskHistoryBox.Items.Add(task);
        }