示例#1
0
 /// <summary>
 ///		Trata el fin de la ejecución del proceso
 /// </summary>
 private void TreatEndScript(PowerShellInstance processor, Action endCallBack)
 {
     // Recoge los datos de salida
     foreach (object item in processor.OutputObjects)
     {
         OutputItems.Add(item);
     }
     // Recoge los errores
     foreach (string error in processor.Errors)
     {
         Errors.Add(error);
     }
     // Llama a la acción indicada por el creador y lanza el evento de fin
     endCallBack?.Invoke();
     EndExecute?.Invoke(this, EventArgs.Empty);
 }
示例#2
0
        /// <summary>
        ///		Ejecuta el script
        /// </summary>
        public void Execute(Action endCallback = null)
        {
            Task task;
            PowerShellInstance processor = new PowerShellInstance(Script, InputParameters);

            // Limpia los datos de salida
            OutputItems.Clear();
            Errors.Clear();
            // Asigna el manejador de eventos
            processor.EndExecute += (sender, args) => TreatEndScript(processor, endCallback);
            // Crea la tarea para la ejecución en otro hilo
            task = new Task(() => processor.Process());
            // Arranca la tarea
            try
            {
                task.Start();
            }
            catch (Exception exception)
            {
                Errors.Add($"Error when execute script {exception.Message}");
                endCallback?.Invoke();
                EndExecute?.Invoke(this, EventArgs.Empty);
            }
        }