public void Execute(TaskStep task)
        {
            var inputs = new Dictionary <string, object>();

            foreach (var input in task.Inputs)
            {
                inputs.Add($"{input.Key}", input.Value);
            }

            var taskVariables = CreateTaskVariables();

            var variables = new Dictionary <string, object>();

            foreach (var item in inputs)
            {
                variables.Add("INPUT_" + item.Key.Replace(' ', '_').ToUpperInvariant(), item.Value);
            }

            foreach (var item in taskVariables)
            {
                variables.Add(item.Key.Replace(".", "_"), item.Value);
            }

            var scriptName = task.TaskDefinition.Execution["PowerShell3"]["target"].ToString();

            string scriptToRun = Path.Combine(task.TaskTargetFolder, scriptName);

            var timeout = task.TimeoutInMinutes * 60 * 1000;

            PowerShellInvoker.RunPowerShellScript(
                scriptToRun,
                task.TaskTargetFolder,
                null,
                variables,
                timeout: timeout == 0 ? -1 : timeout);
        }