public static void StepWizardStep(StepUiaWizardCommand cmdlet) { // getting the step the user ordered to run if (cmdlet.InputObject != null && null != cmdlet.InputObject) { WizardStep stepToRun = null; cmdlet.WriteVerbose(cmdlet, "searching for a step"); foreach (WizardStep step in cmdlet.InputObject.Steps) { cmdlet.WriteVerbose(cmdlet, "found step: " + step.Name); if (step.Name != cmdlet.Name) continue; cmdlet.WriteVerbose(cmdlet, "found the step we've been searching for"); stepToRun = step; break; /* if (step.Name == cmdlet.Name) { //WriteVerbose(this, "found the step we've been searching for"); cmdlet.WriteVerbose(cmdlet, "found the step we've been searching for"); stepToRun = step; break; } */ } if (stepToRun == null) { // ErrorRecord err = // new ErrorRecord( // new Exception("Couldn't find the step"), // "StepNotFound", // ErrorCategory.InvalidArgument, // stepToRun.Name); // err.ErrorDetails = // new ErrorDetails( // "Failed to find the step"); // WriteError(this, err, true); cmdlet.WriteError( cmdlet, "Couldn't find the step", "StepNotFound", ErrorCategory.InvalidArgument, true); } bool result = false; do { cmdlet.WriteVerbose(cmdlet, "checking controls' properties"); // if there is no SearchCriteria, for example, there's at least one @{} if (stepToRun.SearchCriteria.Length == 0 || Regex.IsMatch( stepToRun.SearchCriteria.ToString(), @"[\@][\{]\s+?[\}]")) { result = true; } else { result = //testControlByPropertiesFromHashtable( cmdlet.TestControlByPropertiesFromHashtable( // 20130315 null, stepToRun.SearchCriteria, //this.Timeout); cmdlet.Timeout); } if (result) { cmdlet.WriteVerbose(cmdlet, "there are no SearchCriteria"); cmdlet.WriteVerbose(cmdlet, "thus, control state is confirmed"); } else { cmdlet.WriteVerbose(cmdlet, "control state is not yet confirmed. Checking the timeout"); cmdlet.SleepAndRunScriptBlocks(cmdlet); // wait until timeout expires or the state will be confirmed as valid DateTime nowDate = DateTime.Now; if ((nowDate - cmdlet.StartDate).TotalSeconds > cmdlet.Timeout / 1000) { //WriteObject(this, false); //result = true; //return; // WriteVerbose(this, "the timeout has already expired"); // ErrorRecord err = // new ErrorRecord( // new Exception("Timeout expired"), // "TimeoutExpired", // ErrorCategory.OperationTimeout, // this.InputObject); // err.ErrorDetails = // new ErrorDetails( // "Timeout expired"); // WriteError(this, err, true); cmdlet.WriteError( cmdlet, "Timeout expired", "TimeoutExpired", ErrorCategory.OperationTimeout, true); } } } while (!result); //WriteVerbose(this, "running script blocks"); // 20130319 //cmdlet.WriteVerbose(cmdlet, "running ForwardAction, BackwardAction, CancelAction scriptblocks"); cmdlet.WriteVerbose(cmdlet, "running ForwardAction or BackwardAction scriptblocks"); //RunWizardStepScriptBlocks(this, stepToRun, Forward); // 20130318 //cmdlet.RunWizardStepScriptBlocks(cmdlet, stepToRun, cmdlet.Forward); // 20130321 //cmdlet.RunWizardStepScriptBlocks(cmdlet, stepToRun, cmdlet.Forward, null); cmdlet.RunWizardStepScriptBlocks(cmdlet, stepToRun, stepToRun.ToDo, null); //if (PassThru) { if (cmdlet.PassThru) { //WriteObject(this, InputObject); cmdlet.WriteObject(cmdlet, cmdlet.InputObject); } else { //WriteObject(this, true); cmdlet.WriteObject(cmdlet, true); } } else { // ErrorRecord err = // new ErrorRecord( // new Exception("The wizard object you provided is not valid"), // "WrongWizardObject", // ErrorCategory.InvalidArgument, // InputObject); // err.ErrorDetails = // new ErrorDetails( // "The wizard object you provided is not valid"); // WriteError(this, err, true); cmdlet.WriteError( cmdlet, "The wizard object you provided is not valid", "WrongWizardObject", ErrorCategory.InvalidArgument, true); } }
public static void StepWizardStep(StepUiaWizardCommand cmdlet) { // getting the step the user ordered to run if (cmdlet.InputObject != null && null != cmdlet.InputObject) { WizardStep stepToRun = null; cmdlet.WriteVerbose(cmdlet, "searching for a step"); foreach (WizardStep step in cmdlet.InputObject.Steps) { cmdlet.WriteVerbose(cmdlet, "found step: " + step.Name); if (step.Name != cmdlet.Name) { continue; } cmdlet.WriteVerbose(cmdlet, "found the step we've been searching for"); stepToRun = step; break; /* * if (step.Name == cmdlet.Name) { * //WriteVerbose(this, "found the step we've been searching for"); * cmdlet.WriteVerbose(cmdlet, "found the step we've been searching for"); * stepToRun = step; * break; * } */ } if (stepToRun == null) { // ErrorRecord err = // new ErrorRecord( // new Exception("Couldn't find the step"), // "StepNotFound", // ErrorCategory.InvalidArgument, // stepToRun.Name); // err.ErrorDetails = // new ErrorDetails( // "Failed to find the step"); // WriteError(this, err, true); cmdlet.WriteError( cmdlet, "Couldn't find the step", "StepNotFound", ErrorCategory.InvalidArgument, true); } bool result = false; do { cmdlet.WriteVerbose(cmdlet, "checking controls' properties"); // if there is no SearchCriteria, for example, there's at least one @{} if (stepToRun.SearchCriteria.Length == 0 || Regex.IsMatch( stepToRun.SearchCriteria.ToString(), @"[\@][\{]\s+?[\}]")) { result = true; } else { result = //testControlByPropertiesFromHashtable( cmdlet.TestControlByPropertiesFromHashtable( // 20130315 null, stepToRun.SearchCriteria, //this.Timeout); cmdlet.Timeout); } if (result) { cmdlet.WriteVerbose(cmdlet, "there are no SearchCriteria"); cmdlet.WriteVerbose(cmdlet, "thus, control state is confirmed"); } else { cmdlet.WriteVerbose(cmdlet, "control state is not yet confirmed. Checking the timeout"); cmdlet.SleepAndRunScriptBlocks(cmdlet); // wait until timeout expires or the state will be confirmed as valid DateTime nowDate = DateTime.Now; if ((nowDate - cmdlet.StartDate).TotalSeconds > cmdlet.Timeout / 1000) { //WriteObject(this, false); //result = true; //return; // WriteVerbose(this, "the timeout has already expired"); // ErrorRecord err = // new ErrorRecord( // new Exception("Timeout expired"), // "TimeoutExpired", // ErrorCategory.OperationTimeout, // this.InputObject); // err.ErrorDetails = // new ErrorDetails( // "Timeout expired"); // WriteError(this, err, true); cmdlet.WriteError( cmdlet, "Timeout expired", "TimeoutExpired", ErrorCategory.OperationTimeout, true); } } } while (!result); //WriteVerbose(this, "running script blocks"); // 20130319 //cmdlet.WriteVerbose(cmdlet, "running ForwardAction, BackwardAction, CancelAction scriptblocks"); cmdlet.WriteVerbose(cmdlet, "running ForwardAction or BackwardAction scriptblocks"); //RunWizardStepScriptBlocks(this, stepToRun, Forward); // 20130318 //cmdlet.RunWizardStepScriptBlocks(cmdlet, stepToRun, cmdlet.Forward); // 20130321 //cmdlet.RunWizardStepScriptBlocks(cmdlet, stepToRun, cmdlet.Forward, null); cmdlet.RunWizardStepScriptBlocks(cmdlet, stepToRun, stepToRun.ToDo, null); //if (PassThru) { if (cmdlet.PassThru) { //WriteObject(this, InputObject); cmdlet.WriteObject(cmdlet, cmdlet.InputObject); } else { //WriteObject(this, true); cmdlet.WriteObject(cmdlet, true); } } else { // ErrorRecord err = // new ErrorRecord( // new Exception("The wizard object you provided is not valid"), // "WrongWizardObject", // ErrorCategory.InvalidArgument, // InputObject); // err.ErrorDetails = // new ErrorDetails( // "The wizard object you provided is not valid"); // WriteError(this, err, true); cmdlet.WriteError( cmdlet, "The wizard object you provided is not valid", "WrongWizardObject", ErrorCategory.InvalidArgument, true); } }