Esempio n. 1
0
 public JobInvocationInfo(JobDefinition definition, CommandParameterCollection parameters)
 {
     this._name       = string.Empty;
     this._instanceId = Guid.NewGuid();
     this._definition = definition;
     this.Parameters.Add(parameters ?? new CommandParameterCollection());
 }
Esempio n. 2
0
        /// <summary>
        /// Creates a new job of the appropriate type given by JobDefinition passed in.
        /// </summary>
        /// <param name="definition">JobDefinition defining the command.</param>
        /// <returns>Job2 object of the appropriate type specified by the definition.</returns>
        /// <exception cref="InvalidOperationException">If JobSourceAdapter type specified
        /// in definition is not registered.</exception>
        /// <exception cref="Exception">JobSourceAdapter implementation exception thrown on error.
        /// </exception>
        public Job2 NewJob(JobDefinition definition)
        {
            if (definition == null)
            {
                throw new ArgumentNullException("definition");
            }

            JobSourceAdapter sourceAdapter = GetJobSourceAdapter(definition);
            Job2             newJob;

#pragma warning disable 56500
            try
            {
                newJob = sourceAdapter.NewJob(definition);
            }
            catch (Exception exception)
            {
                // Since we are calling into 3rd party code
                // catching Exception is allowed. In all
                // other cases the appropriate exception
                // needs to be caught.

                // sourceAdapter.NewJob returned unknown error.
                _tracer.TraceException(exception);
                throw;
            }
#pragma warning restore 56500

            return(newJob);
        }
Esempio n. 3
0
        /// <summary>
        /// Saves the job to a persisted store.
        /// </summary>
        /// <param name="job">Job2 type job to persist.</param>
        /// <param name="definition">Job definition containing source adapter information.</param>
        public void PersistJob(Job2 job, JobDefinition definition)
        {
            if (job == null)
            {
                throw new PSArgumentNullException("job");
            }

            if (definition == null)
            {
                throw new PSArgumentNullException("definition");
            }

            JobSourceAdapter sourceAdapter = GetJobSourceAdapter(definition);

            try
            {
                sourceAdapter.PersistJob(job);
            }
            catch (Exception exception)
            {
                // Since we are calling into 3rd party code
                // catching Exception is allowed. In all
                // other cases the appropriate exception
                // needs to be caught.

                // sourceAdapter.NewJob returned unknown error.
                _tracer.TraceException(exception);
                throw;
            }
        }
Esempio n. 4
0
 public JobInvocationInfo(JobDefinition definition, CommandParameterCollection parameters)
 {
     this._name = string.Empty;
     this._instanceId = Guid.NewGuid();
     this._definition = definition;
     this.Parameters.Add(parameters ?? new CommandParameterCollection());
 }
        /// <summary>
        /// Create a new job definition with a single set of parameters.
        /// </summary>
        /// <param name="definition">The job definition.</param>
        /// <param name="parameters">The parameter collection to use.</param>
        public JobInvocationInfo(JobDefinition definition, Dictionary <string, object> parameters)
        {
            _definition = definition;
            var convertedCollection = ConvertDictionaryToParameterCollection(parameters);

            if (convertedCollection != null)
            {
                Parameters.Add(convertedCollection);
            }
        }
Esempio n. 6
0
 public JobInvocationInfo(JobDefinition definition, Dictionary<string, object> parameters)
 {
     this._name = string.Empty;
     this._instanceId = Guid.NewGuid();
     this._definition = definition;
     CommandParameterCollection item = ConvertDictionaryToParameterCollection(parameters);
     if (item != null)
     {
         this.Parameters.Add(item);
     }
 }
 /// <summary>
 /// </summary>
 /// <param name="definition"></param>
 /// <param name="parameters"></param>
 public JobInvocationInfo(JobDefinition definition, IEnumerable <CommandParameterCollection> parameters)
 {
     _definition = definition;
     if (parameters == null)
     {
         return;
     }
     foreach (var parameter in parameters)
     {
         Parameters.Add(parameter);
     }
 }
		public ScheduledJobInvocationInfo(JobDefinition definition, Dictionary<string, object> parameters) : base(definition, parameters)
		{
			if (definition != null)
			{
				base.Name = definition.Name;
				return;
			}
			else
			{
				throw new PSArgumentNullException("definition");
			}
		}
Esempio n. 9
0
        public JobInvocationInfo(JobDefinition definition, Dictionary <string, object> parameters)
        {
            this._name       = string.Empty;
            this._instanceId = Guid.NewGuid();
            this._definition = definition;
            CommandParameterCollection item = ConvertDictionaryToParameterCollection(parameters);

            if (item != null)
            {
                this.Parameters.Add(item);
            }
        }
Esempio n. 10
0
 public JobInvocationInfo(JobDefinition definition, IEnumerable<CommandParameterCollection> parameters)
 {
     this._name = string.Empty;
     this._instanceId = Guid.NewGuid();
     this._definition = definition;
     if (parameters != null)
     {
         foreach (CommandParameterCollection parameters2 in parameters)
         {
             this.Parameters.Add(parameters2);
         }
     }
 }
Esempio n. 11
0
 public JobInvocationInfo(JobDefinition definition, IEnumerable <CommandParameterCollection> parameters)
 {
     this._name       = string.Empty;
     this._instanceId = Guid.NewGuid();
     this._definition = definition;
     if (parameters != null)
     {
         foreach (CommandParameterCollection parameters2 in parameters)
         {
             this.Parameters.Add(parameters2);
         }
     }
 }
Esempio n. 12
0
		private void DeserializeInvocationInfo(SerializationInfo info)
		{
			string str = info.GetString("InvocationInfo_Command");
			string str1 = info.GetString("InvocationInfo_Name");
			string str2 = info.GetString("InvocationInfo_ModuleName");
			string str3 = info.GetString("InvocationInfo_AdapterTypeName");
			Dictionary<string, object> strs = new Dictionary<string, object>();
			string str4 = info.GetString("InvocationParam_ScriptBlock");
			if (str4 != null)
			{
				strs.Add("ScriptBlock", ScriptBlock.Create(str4));
			}
			string str5 = info.GetString("InvocationParam_FilePath");
			if (!string.IsNullOrEmpty(str5))
			{
				strs.Add("FilePath", str5);
			}
			str4 = info.GetString("InvocationParam_InitScript");
			if (!string.IsNullOrEmpty(str4))
			{
				strs.Add("InitializationScript", ScriptBlock.Create(str4));
			}
			bool flag = info.GetBoolean("InvocationParam_RunAs32");
			strs.Add("RunAs32", flag);
			AuthenticationMechanism value = (AuthenticationMechanism)info.GetValue("InvocationParam_Authentication", typeof(AuthenticationMechanism));
			strs.Add("Authentication", value);
			object[] objArray = (object[])info.GetValue("InvocationParam_ArgList", typeof(object[]));
			if (objArray != null)
			{
				strs.Add("ArgumentList", objArray);
			}
			JobDefinition jobDefinition = new JobDefinition(null, str, str1);
			jobDefinition.ModuleName = str2;
			jobDefinition.JobSourceAdapterTypeName = str3;
			CommandParameterCollection commandParameterCollection = new CommandParameterCollection();
			foreach (KeyValuePair<string, object> keyValuePair in strs)
			{
				CommandParameter commandParameter = new CommandParameter(keyValuePair.Key, keyValuePair.Value);
				commandParameterCollection.Add(commandParameter);
			}
			base.Definition = jobDefinition;
			base.Name = str1;
			base.Command = str;
			base.Parameters.Add(commandParameterCollection);
		}
Esempio n. 13
0
 public JobInvocationInfo(JobDefinition definition, IEnumerable<Dictionary<string, object>> parameterCollectionList)
 {
     this._name = string.Empty;
     this._instanceId = Guid.NewGuid();
     this._definition = definition;
     if (parameterCollectionList != null)
     {
         foreach (Dictionary<string, object> dictionary in parameterCollectionList)
         {
             if (dictionary != null)
             {
                 CommandParameterCollection item = ConvertDictionaryToParameterCollection(dictionary);
                 if (item != null)
                 {
                     this.Parameters.Add(item);
                 }
             }
         }
     }
 }
 public JobInvocationInfo(JobDefinition definition, IEnumerable <Dictionary <string, object> > parameterCollectionList)
 {
     _definition = definition;
     if (parameterCollectionList == null)
     {
         return;
     }
     foreach (var parameterCollection in parameterCollectionList)
     {
         if (parameterCollection == null)
         {
             continue;
         }
         CommandParameterCollection convertedCollection = ConvertDictionaryToParameterCollection(parameterCollection);
         if (convertedCollection != null)
         {
             Parameters.Add(convertedCollection);
         }
     }
 }
Esempio n. 15
0
 public JobInvocationInfo(JobDefinition definition, IEnumerable <Dictionary <string, object> > parameterCollectionList)
 {
     this._name       = string.Empty;
     this._instanceId = Guid.NewGuid();
     this._definition = definition;
     if (parameterCollectionList != null)
     {
         foreach (Dictionary <string, object> dictionary in parameterCollectionList)
         {
             if (dictionary != null)
             {
                 CommandParameterCollection item = ConvertDictionaryToParameterCollection(dictionary);
                 if (item != null)
                 {
                     this.Parameters.Add(item);
                 }
             }
         }
     }
 }
Esempio n. 16
0
        public Job2 NewJob(JobDefinition definition)
        {
            Job2 job;

            if (definition == null)
            {
                throw new ArgumentNullException("definition");
            }
            JobSourceAdapter jobSourceAdapter = this.GetJobSourceAdapter(definition);

            try
            {
                job = jobSourceAdapter.NewJob(definition);
            }
            catch (Exception exception)
            {
                this.Tracer.TraceException(exception);
                CommandProcessorBase.CheckForSevereException(exception);
                throw;
            }
            return(job);
        }
Esempio n. 17
0
        public void PersistJob(Job2 job, JobDefinition definition)
        {
            if (job == null)
            {
                throw new PSArgumentNullException("job");
            }
            if (definition == null)
            {
                throw new PSArgumentNullException("definition");
            }
            JobSourceAdapter jobSourceAdapter = this.GetJobSourceAdapter(definition);

            try
            {
                jobSourceAdapter.PersistJob(job);
            }
            catch (Exception exception)
            {
                this.Tracer.TraceException(exception);
                CommandProcessorBase.CheckForSevereException(exception);
                throw;
            }
        }
Esempio n. 18
0
		private ScheduledJobDefinition CreateFilePathDefinition()
		{
			JobDefinition jobDefinition = new JobDefinition(typeof(ScheduledJobSourceAdapter), this.FilePath, this._name);
			jobDefinition.ModuleName = "PSScheduledJob";
			Dictionary<string, object> strs = this.CreateCommonParameters();
			if (this.FilePath.EndsWith(".ps1", StringComparison.OrdinalIgnoreCase))
			{
				Collection<PathInfo> resolvedPSPathFromPSPath = base.SessionState.Path.GetResolvedPSPathFromPSPath(this.FilePath);
				if (resolvedPSPathFromPSPath.Count == 1)
				{
					strs.Add("FilePath", resolvedPSPathFromPSPath[0].Path);
					JobInvocationInfo scheduledJobInvocationInfo = new ScheduledJobInvocationInfo(jobDefinition, strs);
					ScheduledJobDefinition scheduledJobDefinition = new ScheduledJobDefinition(scheduledJobInvocationInfo, this.Trigger, this.ScheduledJobOption, this._credential);
					return scheduledJobDefinition;
				}
				else
				{
					string str = StringUtil.Format(ScheduledJobErrorStrings.InvalidFilePath, new object[0]);
					Exception runtimeException = new RuntimeException(str);
					ErrorRecord errorRecord = new ErrorRecord(runtimeException, "InvalidFilePathParameterForRegisterScheduledJobDefinition", ErrorCategory.InvalidArgument, this);
					base.WriteError(errorRecord);
					return null;
				}
			}
			else
			{
				string str1 = StringUtil.Format(ScheduledJobErrorStrings.InvalidFilePathFile, new object[0]);
				Exception exception = new RuntimeException(str1);
				ErrorRecord errorRecord1 = new ErrorRecord(exception, "InvalidFilePathParameterForRegisterScheduledJobDefinition", ErrorCategory.InvalidArgument, this);
				base.WriteError(errorRecord1);
				return null;
			}
		}
Esempio n. 19
0
        internal PSWorkflowJob CreateJobInternal(Guid jobInstanceId, Activity workflow, string command, string name, Dictionary<string, object> parameters, string xaml, Dictionary<string, object> creationContext)
        {
            AssertNotDisposed();

            if (jobInstanceId == Guid.Empty)
                throw new ArgumentNullException("jobInstanceId");

            if (workflow == null)
                throw new ArgumentNullException("workflow");

            if (command == null)
                throw new ArgumentNullException("command");

            if (name == null)
                throw new ArgumentNullException("name");

            if (_wfJobTable.ContainsKey(jobInstanceId))
            {
                ArgumentException exception = new ArgumentException(Resources.DuplicateInstanceId);
                Tracer.TraceException(exception);
                throw exception;
            }

            lock (lockObjects.GetLockObject(jobInstanceId))
            {

                if (_wfJobTable.ContainsKey(jobInstanceId))
                {
                    ArgumentException exception = new ArgumentException(Resources.DuplicateInstanceId);
                    Tracer.TraceException(exception);
                    throw exception;
                }

                JobDefinition definition = new JobDefinition(typeof(WorkflowJobSourceAdapter), command, name);

                var parameterDictionary = new Dictionary<string, object>(StringComparer.CurrentCultureIgnoreCase);

                if (parameters != null)
                {
                    foreach (KeyValuePair<string, object> param in parameters)
                    {
                        parameterDictionary.Add(param.Key, param.Value);
                    }
                }

                string[] computerNames = null;
                bool gotComputerNames = false;
                object value;
                if (parameterDictionary.Count != 0 && parameterDictionary.TryGetValue(Constants.ComputerName, out value))
                {
                    if (LanguagePrimitives.TryConvertTo(value, CultureInfo.InvariantCulture, out computerNames))
                        gotComputerNames = computerNames != null;
                }

                if (gotComputerNames)
                {
                    if (computerNames.Length > 1)
                        throw new ArgumentException(Resources.OneComputerNameAllowed);

                    parameterDictionary.Remove(Constants.ComputerName);
                }

                var childSpecification = new JobInvocationInfo(definition, parameterDictionary);
                childSpecification.Command = command;

                // If actual computernames were specified, then set the PSComputerName parameter.
                if (gotComputerNames)
                {
                    var computerNameParameter = new CommandParameter(Constants.ComputerName, computerNames);
                    childSpecification.Parameters[0].Add(computerNameParameter);
                }

                // Job objects will be disposed of on parent job removal.
                var childJob = new PSWorkflowJob(_runtime, childSpecification, jobInstanceId, creationContext);
                childJob.JobMetadata = CreateJobMetadataWithNoParentDefined(childJob, computerNames);

                childJob.LoadWorkflow(childSpecification.Parameters[0], workflow, xaml);
                this.AddJob(childJob);

                return childJob;
            }
        }
Esempio n. 20
0
		internal PSWorkflowJob CreateJobInternal(Guid jobInstanceId, Activity workflow, string command, string name, Dictionary<string, object> parameters, string xaml)
		{
			object obj = null;
			PSWorkflowJob pSWorkflowJob;
			if (jobInstanceId != Guid.Empty)
			{
				if (workflow != null)
				{
					if (command != null)
					{
						if (name != null)
						{
							if (!this._wfJobTable.ContainsKey(jobInstanceId))
							{
								lock (this.lockObjects.GetLockObject(jobInstanceId))
								{
									if (!this._wfJobTable.ContainsKey(jobInstanceId))
									{
										JobDefinition jobDefinition = new JobDefinition(typeof(WorkflowJobSourceAdapter), command, name);
										Dictionary<string, object> strs = new Dictionary<string, object>(StringComparer.CurrentCultureIgnoreCase);
										if (parameters != null)
										{
											foreach (KeyValuePair<string, object> parameter in parameters)
											{
												strs.Add(parameter.Key, parameter.Value);
											}
										}
										string[] strArrays = null;
										bool flag = false;
										if (strs.Count != 0 && strs.TryGetValue("PSComputerName", out obj) && LanguagePrimitives.TryConvertTo<string[]>(obj, CultureInfo.InvariantCulture, out strArrays))
										{
											flag = strArrays != null;
										}
										if (flag)
										{
											if ((int)strArrays.Length <= 1)
											{
												strs.Remove("PSComputerName");
											}
											else
											{
												throw new ArgumentException(Resources.OneComputerNameAllowed);
											}
										}
										JobInvocationInfo jobInvocationInfo = new JobInvocationInfo(jobDefinition, strs);
										jobInvocationInfo.Command = command;
										if (flag)
										{
											CommandParameter commandParameter = new CommandParameter("PSComputerName", strArrays);
											jobInvocationInfo.Parameters[0].Add(commandParameter);
										}
										PSWorkflowJob pSWorkflowJob1 = new PSWorkflowJob(this._runtime, jobInvocationInfo, jobInstanceId);
										pSWorkflowJob1.JobMetadata = PSWorkflowJobManager.CreateJobMetadataWithNoParentDefined(pSWorkflowJob1, strArrays);
										pSWorkflowJob1.LoadWorkflow(jobInvocationInfo.Parameters[0], workflow, xaml);
										this.AddJob(pSWorkflowJob1);
										pSWorkflowJob = pSWorkflowJob1;
									}
									else
									{
										ArgumentException argumentException = new ArgumentException(Resources.DuplicateInstanceId);
										PSWorkflowJobManager.Tracer.TraceException(argumentException);
										throw argumentException;
									}
								}
								return pSWorkflowJob;
							}
							else
							{
								ArgumentException argumentException1 = new ArgumentException(Resources.DuplicateInstanceId);
								PSWorkflowJobManager.Tracer.TraceException(argumentException1);
								throw argumentException1;
							}
						}
						else
						{
							throw new ArgumentNullException("name");
						}
					}
					else
					{
						throw new ArgumentNullException("command");
					}
				}
				else
				{
					throw new ArgumentNullException("workflow");
				}
			}
			else
			{
				throw new ArgumentNullException("jobInstanceId");
			}
		}
 /// <summary>
 /// Populates job properties with valid values.
 /// </summary>
 /// <param name="updateJobParams">Job properties specified via PowerShell.</param>
 /// <param name="existingJobDefinition">Existing job definition.</param>
 private void PopulateExistingJobParams(PSJobParams updateJobParams, JobDefinition existingJobDefinition)
 {
     JobProperties jobProperties = this.GetExistingJobPropertiesParams(updateJobParams, existingJobDefinition.Properties);
     existingJobDefinition.Properties = jobProperties;
 }
Esempio n. 22
0
        private ScheduledJobDefinition CreateScriptBlockDefinition()
        {
            JobDefinition jobDefinition = new JobDefinition(typeof(ScheduledJobSourceAdapter), ScriptBlock.ToString(), _name);
            jobDefinition.ModuleName = ModuleName;
            Dictionary<string, object> parameterCollection = CreateCommonParameters();

            // ScriptBlock, mandatory
            parameterCollection.Add(ScheduledJobInvocationInfo.ScriptBlockParameter, ScriptBlock);

            JobInvocationInfo jobInvocationInfo = new ScheduledJobInvocationInfo(jobDefinition, parameterCollection);

            ScheduledJobDefinition definition = new ScheduledJobDefinition(jobInvocationInfo, Trigger, 
                ScheduledJobOption, _credential);

            return definition;
        }
Esempio n. 23
0
        private void DeserializeInvocationInfo(SerializationInfo info)
        {
            string command = info.GetString("InvocationInfo_Command");
            string name = info.GetString("InvocationInfo_Name");
            string moduleName = info.GetString("InvocationInfo_ModuleName");
            string adapterTypeName = info.GetString("InvocationInfo_AdapterTypeName");

            //
            // Parameters
            Dictionary<string, object> parameters = new Dictionary<string, object>();

            // ScriptBlock
            string script = info.GetString("InvocationParam_ScriptBlock");
            if (script != null)
            {
                parameters.Add(ScriptBlockParameter, ScriptBlock.Create(script));
            }

            // FilePath
            string filePath = info.GetString("InvocationParam_FilePath");
            if (!string.IsNullOrEmpty(filePath))
            {
                parameters.Add(FilePathParameter, filePath);
            }

            // InitializationScript
            script = info.GetString("InvocationParam_InitScript");
            if (!string.IsNullOrEmpty(script))
            {
                parameters.Add(InitializationScriptParameter, ScriptBlock.Create(script));
            }

            // RunAs32
            bool runAs32 = info.GetBoolean("InvocationParam_RunAs32");
            parameters.Add(RunAs32Parameter, runAs32);

            // Authentication
            AuthenticationMechanism authentication = (AuthenticationMechanism)info.GetValue("InvocationParam_Authentication",
                typeof(AuthenticationMechanism));
            parameters.Add(AuthenticationParameter, authentication);

            // ArgumentList
            object[] argList = (object[])info.GetValue("InvocationParam_ArgList", typeof(object[]));
            if (argList != null)
            {
                parameters.Add(ArgumentListParameter, argList);
            }

            JobDefinition jobDefinition = new JobDefinition(null, command, name);
            jobDefinition.ModuleName = moduleName;
            jobDefinition.JobSourceAdapterTypeName = adapterTypeName;

            // Convert to JobInvocationParameter collection
            CommandParameterCollection paramCollection = new CommandParameterCollection();
            foreach (KeyValuePair<string, object> param in parameters)
            {
                CommandParameter paramItem = new CommandParameter(param.Key, param.Value);
                paramCollection.Add(paramItem);
            }

            this.Definition = jobDefinition;
            this.Name = name;
            this.Command = command;
            this.Parameters.Add(paramCollection);
        }
Esempio n. 24
0
		internal WorkflowJobDefinition(JobDefinition jobDefinition) : this(jobDefinition, string.Empty, WorkflowJobDefinition.EmptyEnumerable, string.Empty, string.Empty)
		{
		}
Esempio n. 25
0
        private JobSourceAdapter GetJobSourceAdapter(JobDefinition definition)
        {
            string           jobSourceAdapterTypeName;
            JobSourceAdapter adapter;

            if (!string.IsNullOrEmpty(definition.JobSourceAdapterTypeName))
            {
                jobSourceAdapterTypeName = definition.JobSourceAdapterTypeName;
            }
            else
            {
                if (definition.JobSourceAdapterType == null)
                {
                    throw new InvalidOperationException(ResourceManagerCache.GetResourceString("RemotingErrorIdStrings", "JobSourceAdapterNotFound"));
                }
                jobSourceAdapterTypeName = definition.JobSourceAdapterType.Name;
            }
            bool flag = false;

            lock (this._syncObject)
            {
                flag = this._sourceAdapters.TryGetValue(jobSourceAdapterTypeName, out adapter);
            }
            if (flag)
            {
                return(adapter);
            }
            if (string.IsNullOrEmpty(definition.ModuleName))
            {
                throw new InvalidOperationException(ResourceManagerCache.GetResourceString("RemotingErrorIdStrings", "JobSourceAdapterNotFound"));
            }
            Exception innerException = null;

            try
            {
                InitialSessionState initialSessionState = InitialSessionState.CreateDefault2();
                initialSessionState.Commands.Clear();
                initialSessionState.Formats.Clear();
                initialSessionState.Commands.Add(new SessionStateCmdletEntry("Import-Module", typeof(ImportModuleCommand), null));
                using (PowerShell shell = PowerShell.Create(initialSessionState))
                {
                    shell.AddCommand("Import-Module");
                    shell.AddParameter("Name", definition.ModuleName);
                    shell.Invoke();
                    if (shell.ErrorBuffer.Count > 0)
                    {
                        innerException = shell.ErrorBuffer[0].Exception;
                    }
                }
            }
            catch (RuntimeException exception2)
            {
                innerException = exception2;
            }
            catch (InvalidOperationException exception3)
            {
                innerException = exception3;
            }
            catch (ScriptCallDepthException exception4)
            {
                innerException = exception4;
            }
            catch (SecurityException exception5)
            {
                innerException = exception5;
            }
            catch (ThreadAbortException exception6)
            {
                innerException = exception6;
            }
            if (innerException != null)
            {
                throw new InvalidOperationException(ResourceManagerCache.GetResourceString("RemotingErrorIdStrings", "JobSourceAdapterNotFound"), innerException);
            }
            return(this.AssertAndReturnJobSourceAdapter(jobSourceAdapterTypeName));
        }
Esempio n. 26
0
		private void UpdateJobInvocationInfo()
		{
			string command;
			Dictionary<string, object> strs = this.UpdateParameters();
			string name = this._definition.Name;
			if (this.ScriptBlock == null)
			{
				if (this.FilePath == null)
				{
					command = this._definition.InvocationInfo.Command;
				}
				else
				{
					command = this.FilePath;
				}
			}
			else
			{
				command = this.ScriptBlock.ToString();
			}
			JobDefinition jobDefinition = new JobDefinition(typeof(ScheduledJobSourceAdapter), command, name);
			jobDefinition.ModuleName = "PSScheduledJob";
			JobInvocationInfo scheduledJobInvocationInfo = new ScheduledJobInvocationInfo(jobDefinition, strs);
			this._definition.UpdateJobInvocationInfo(scheduledJobInvocationInfo, false);
		}
Esempio n. 27
0
		private ScheduledJobDefinition CreateScriptBlockDefinition()
		{
			JobDefinition jobDefinition = new JobDefinition(typeof(ScheduledJobSourceAdapter), this.ScriptBlock.ToString(), this._name);
			jobDefinition.ModuleName = "PSScheduledJob";
			Dictionary<string, object> strs = this.CreateCommonParameters();
			strs.Add("ScriptBlock", this.ScriptBlock);
			JobInvocationInfo scheduledJobInvocationInfo = new ScheduledJobInvocationInfo(jobDefinition, strs);
			ScheduledJobDefinition scheduledJobDefinition = new ScheduledJobDefinition(scheduledJobInvocationInfo, this.Trigger, this.ScheduledJobOption, this._credential);
			return scheduledJobDefinition;
		}
Esempio n. 28
0
		internal WorkflowJobDefinition(JobDefinition jobDefinition, string modulePath, IEnumerable<string> dependentWorkflows, string dependentAssemblyPath, string xaml) : this(jobDefinition.JobSourceAdapterType, jobDefinition.Command, jobDefinition.Name, modulePath, dependentWorkflows, dependentAssemblyPath, xaml)
		{
			base.InstanceId = jobDefinition.InstanceId;
		}
Esempio n. 29
0
 public JobInvocationInfo(JobDefinition definition, IEnumerable<Dictionary<string, object>> parameterCollectionList)
 {
     _definition = definition;
     if (parameterCollectionList == null) return;
     foreach (var parameterCollection in parameterCollectionList)
     {
         if (parameterCollection == null) continue;
         CommandParameterCollection convertedCollection = ConvertDictionaryToParameterCollection(parameterCollection);
         if (convertedCollection != null)
         {
             Parameters.Add(convertedCollection);
         }
     }
 }
Esempio n. 30
0
		internal static WorkflowJobDefinition AsWorkflowJobDefinition(JobDefinition definition)
		{
			WorkflowJobDefinition workflowJobDefinition = definition as WorkflowJobDefinition;
			WorkflowJobDefinition workflowJobDefinition1 = workflowJobDefinition;
			if (workflowJobDefinition == null)
			{
				WorkflowJobDefinition workflowJobDefinition2 = DefinitionCache.Instance.GetDefinition(definition.InstanceId) as WorkflowJobDefinition;
				workflowJobDefinition1 = workflowJobDefinition2;
				if (workflowJobDefinition2 == null)
				{
					workflowJobDefinition1 = new WorkflowJobDefinition(definition);
				}
			}
			return workflowJobDefinition1;
		}
Esempio n. 31
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="definition"></param>
 /// <param name="parameters"></param>
 public JobInvocationInfo(JobDefinition definition, IEnumerable<CommandParameterCollection> parameters)
 {
     _definition = definition;
     if (parameters == null) return;
     foreach (var parameter in parameters)
     {
         Parameters.Add(parameter);
     }
 }
Esempio n. 32
0
 /// <summary>
 /// Create a new job with the specified definition
 /// </summary>
 /// <param name="definition">job definition to use</param>
 /// <returns>job object</returns>
 public Job2 NewJob(JobDefinition definition)
 {
     return(NewJob(new JobInvocationInfo(definition, new Dictionary <string, object>())));
 }
Esempio n. 33
0
        private ScheduledJobDefinition CreateFilePathDefinition()
        {
            JobDefinition jobDefinition = new JobDefinition(typeof(ScheduledJobSourceAdapter), FilePath, _name);
            jobDefinition.ModuleName = ModuleName;
            Dictionary<string, object> parameterCollection = CreateCommonParameters();

            // FilePath, mandatory
            if (!FilePath.EndsWith(".ps1", StringComparison.OrdinalIgnoreCase))
            {
                string msg = StringUtil.Format(ScheduledJobErrorStrings.InvalidFilePathFile);
                Exception reason = new RuntimeException(msg);
                ErrorRecord errorRecord = new ErrorRecord(reason, "InvalidFilePathParameterForRegisterScheduledJobDefinition", ErrorCategory.InvalidArgument, this);
                WriteError(errorRecord);

                return null;
            }
            Collection<PathInfo> pathInfos = SessionState.Path.GetResolvedPSPathFromPSPath(FilePath);
            if (pathInfos.Count != 1)
            {
                string msg = StringUtil.Format(ScheduledJobErrorStrings.InvalidFilePath);
                Exception reason = new RuntimeException(msg);
                ErrorRecord errorRecord = new ErrorRecord(reason, "InvalidFilePathParameterForRegisterScheduledJobDefinition", ErrorCategory.InvalidArgument, this);
                WriteError(errorRecord);

                return null;
            }
            parameterCollection.Add(ScheduledJobInvocationInfo.FilePathParameter, pathInfos[0].Path);

            JobInvocationInfo jobInvocationInfo = new ScheduledJobInvocationInfo(jobDefinition, parameterCollection);

            ScheduledJobDefinition definition = new ScheduledJobDefinition(jobInvocationInfo, Trigger, 
                ScheduledJobOption, _credential);

            return definition;
        }
Esempio n. 34
0
        /// <summary>
        /// Helper method to find and return the job source adapter if currently loaded or
        /// otherwise load the associated module and the requested source adapter.
        /// </summary>
        /// <param name="definition">JobDefinition supplies the JobSourceAdapter information.</param>
        /// <returns>JobSourceAdapter.</returns>
        private JobSourceAdapter GetJobSourceAdapter(JobDefinition definition)
        {
            string adapterTypeName;

            if (!string.IsNullOrEmpty(definition.JobSourceAdapterTypeName))
            {
                adapterTypeName = definition.JobSourceAdapterTypeName;
            }
            else if (definition.JobSourceAdapterType != null)
            {
                adapterTypeName = definition.JobSourceAdapterType.Name;
            }
            else
            {
                throw new InvalidOperationException(RemotingErrorIdStrings.JobSourceAdapterNotFound);
            }

            JobSourceAdapter adapter;
            bool             adapterFound = false;

            lock (_syncObject)
            {
                adapterFound = _sourceAdapters.TryGetValue(adapterTypeName, out adapter);
            }

            if (!adapterFound)
            {
                if (!string.IsNullOrEmpty(definition.ModuleName))
                {
                    // Attempt to load the module.
                    Exception ex = null;
                    try
                    {
                        InitialSessionState iss = InitialSessionState.CreateDefault2();
                        iss.Commands.Clear();
                        iss.Formats.Clear();
                        iss.Commands.Add(new SessionStateCmdletEntry("Import-Module", typeof(Microsoft.PowerShell.Commands.ImportModuleCommand), null));
                        using (PowerShell powerShell = PowerShell.Create(iss))
                        {
                            powerShell.AddCommand("Import-Module");
                            powerShell.AddParameter("Name", definition.ModuleName);
                            powerShell.Invoke();

                            if (powerShell.ErrorBuffer.Count > 0)
                            {
                                ex = powerShell.ErrorBuffer[0].Exception;
                            }
                        }
                    }
                    catch (RuntimeException e)
                    {
                        ex = e;
                    }
                    catch (InvalidOperationException e)
                    {
                        ex = e;
                    }
                    catch (ScriptCallDepthException e)
                    {
                        ex = e;
                    }
                    catch (SecurityException e)
                    {
                        ex = e;
                    }
                    catch (ThreadAbortException e)
                    {
                        ex = e;
                    }

                    if (ex != null)
                    {
                        throw new InvalidOperationException(RemotingErrorIdStrings.JobSourceAdapterNotFound, ex);
                    }

                    // Now try getting the job source adapter again.
                    adapter = AssertAndReturnJobSourceAdapter(adapterTypeName);
                }
                else
                {
                    throw new InvalidOperationException(RemotingErrorIdStrings.JobSourceAdapterNotFound);
                }
            }

            return(adapter);
        }
Esempio n. 35
0
		internal Activity GetActivity(JobDefinition definition, string xaml)
		{
			bool flag = false;
			WorkflowJobDefinition workflowJobDefinition = new WorkflowJobDefinition(definition, string.Empty, WorkflowJobDefinition.EmptyEnumerable, string.Empty, xaml);
			Activity activityFromCache = this.GetActivityFromCache(workflowJobDefinition, out flag);
			Activity activity = activityFromCache;
			if (activityFromCache == null)
			{
				activity = this.CompileActivityAndSaveInCache(workflowJobDefinition, null, null, out flag);
			}
			Activity activity1 = activity;
			return activity1;
		}
Esempio n. 36
0
		internal Activity GetActivity(JobDefinition definition, string xaml, string[] dependentWorkflows)
		{
			bool flag = false;
			IEnumerable<string> emptyEnumerable;
			JobDefinition jobDefinition = definition;
			string empty = string.Empty;
			string[] strArrays = dependentWorkflows;
			if (strArrays != null)
			{
				emptyEnumerable = (IEnumerable<string>)strArrays;
			}
			else
			{
				emptyEnumerable = WorkflowJobDefinition.EmptyEnumerable;
			}
			WorkflowJobDefinition workflowJobDefinition = new WorkflowJobDefinition(jobDefinition, empty, emptyEnumerable, string.Empty, xaml);
			Activity activityFromCache = this.GetActivityFromCache(workflowJobDefinition, out flag);
			Activity activity = activityFromCache;
			if (activityFromCache == null)
			{
				activity = this.CompileActivityAndSaveInCache(workflowJobDefinition, null, null, out flag);
			}
			Activity activity1 = activity;
			return activity1;
		}
Esempio n. 37
0
		internal Activity GetActivity(JobDefinition definition, out bool windowsWorkflow)
		{
			WorkflowJobDefinition workflowJobDefinition = new WorkflowJobDefinition(definition);
			Activity activityFromCache = this.GetActivityFromCache(workflowJobDefinition, out windowsWorkflow);
			Activity activity = activityFromCache;
			if (activityFromCache == null)
			{
				activity = this.CompileActivityAndSaveInCache(workflowJobDefinition, null, null, out windowsWorkflow);
			}
			Activity activity1 = activity;
			return activity1;
		}
 /// <summary>
 /// </summary>
 /// <param name="definition"></param>
 /// <param name="parameters"></param>
 public JobInvocationInfo(JobDefinition definition, CommandParameterCollection parameters)
 {
     _definition = definition;
     Parameters.Add(parameters ?? new CommandParameterCollection());
 }
Esempio n. 39
0
		internal bool RemoveCachedActivity(JobDefinition definition)
		{
			Activity activity = null;
			bool flag;
			WorkflowJobDefinition workflowJobDefinition = new WorkflowJobDefinition(definition);
			this._cachedActivities.TryRemove(workflowJobDefinition, out activity);
			lock (this._syncObject)
			{
				if (!this._workflowDetailsCache.ContainsKey(workflowJobDefinition))
				{
					return false;
				}
				else
				{
					flag = this._workflowDetailsCache.Remove(workflowJobDefinition);
				}
			}
			return flag;
		}
Esempio n. 40
0
 /// <summary>
 /// Create a new job definition with a single set of parameters.
 /// </summary>
 /// <param name="definition">The job definition</param>
 /// <param name="parameters">The parameter collection to use</param>
 public JobInvocationInfo(JobDefinition definition, Dictionary<string, object> parameters)
 {
     _definition = definition;
     var convertedCollection = ConvertDictionaryToParameterCollection(parameters);
     if (convertedCollection != null)
     {
         Parameters.Add(convertedCollection);
     }
 }
Esempio n. 41
0
		internal bool RemoveCachedActivity(Guid instanceId)
		{
			JobDefinition jobDefinition = new JobDefinition(null, null, null);
			jobDefinition.InstanceId = instanceId;
			return this.RemoveCachedActivity(jobDefinition);
		}
Esempio n. 42
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="definition"></param>
 /// <param name="parameters"></param>
 public JobInvocationInfo(JobDefinition definition, CommandParameterCollection parameters)
 {
     _definition = definition;
     Parameters.Add(parameters ?? new CommandParameterCollection());
 }
Esempio n. 43
0
        /// <summary>
        /// Create new ScheduledJobInvocationInfo object with update information and 
        /// update the job definition object.
        /// </summary>
        private void UpdateJobInvocationInfo()
        {
            Dictionary<string, object> parameters = UpdateParameters();
            string name = _definition.Name;
            string command;
            
            if (ScriptBlock != null)
            {
                command = ScriptBlock.ToString();
            }
            else if (FilePath != null)
            {
                command = FilePath;
            }
            else
            {
                command = _definition.InvocationInfo.Command;
            }

            JobDefinition jobDefinition = new JobDefinition(typeof(ScheduledJobSourceAdapter), command, name);
            jobDefinition.ModuleName = ModuleName;
            JobInvocationInfo jobInvocationInfo = new ScheduledJobInvocationInfo(jobDefinition, parameters);

            _definition.UpdateJobInvocationInfo(jobInvocationInfo, false);
        }
Esempio n. 44
0
 /// <summary>
 /// Create a new job with the specified definition
 /// </summary>
 /// <param name="definition">job definition to use</param>
 /// <returns>job object</returns>
 public Job2 NewJob(JobDefinition definition)
 {
     return NewJob(new JobInvocationInfo(definition, new Dictionary<string, object>()));
 }
        /// <summary>
        /// Create a job.
        /// </summary>
        /// <param name="createJobParams">Job properties entered via powershell.</param>
        /// <returns>The Job definition.</returns>
        public PSSchedulerJobDefinition CreateJob(PSJobParams createJobParams)
        {
            if (string.IsNullOrWhiteSpace(createJobParams.ResourceGroupName))
            {
                throw new PSManagement.PSArgumentNullException(paramName: "ResourceGroupName");
            }

            if (string.IsNullOrWhiteSpace(createJobParams.JobCollectionName))
            {
                throw new PSManagement.PSArgumentNullException(paramName: "JobCollectionName");
            }

            if (string.IsNullOrWhiteSpace(createJobParams.JobName))
            {
                throw new PSManagement.PSArgumentNullException(paramName: "JobName");
            }

            if (!DoesResourceGroupExists(createJobParams.ResourceGroupName))
            {
                throw new PSManagement.PSArgumentException(Resources.SchedulerInvalidResourceGroup);
            }

            IList<JobCollectionDefinition> jobCollection = ListJobCollection(createJobParams.ResourceGroupName, createJobParams.JobCollectionName);

            if (jobCollection == null || jobCollection.Count < 1)
            {
                throw new PSManagement.PSInvalidOperationException(string.Format(Resources.JobCollectionDoesnotExist, createJobParams.JobCollectionName, createJobParams.ResourceGroupName));
            }
            else
            {
                if (JobExists(createJobParams.ResourceGroupName, createJobParams.JobCollectionName, createJobParams.JobName))
                {
                    throw new PSManagement.PSArgumentException(string.Format(Resources.SchedulerExistingJob, createJobParams.JobName, createJobParams.JobCollectionName));
                }

                IList<JobDefinition> listOfJobs = ListJobs(createJobParams.ResourceGroupName, createJobParams.JobCollectionName, jobState: null);

                if (listOfJobs != null)
                {
                    Validate(jobCollection[0], listOfJobs.Count);
                }
            }

            JobAction jobAction = this.GetJobAction(createJobParams);

            JobRecurrence jobRecurrence = this.GetJobRecurrence(createJobParams.JobRecurrence);

            var properties = new JobProperties()
            {
                Action = jobAction,
                Recurrence = jobRecurrence,
                StartTime = createJobParams.StartTime,
                State = createJobParams.JobState.GetValueOrDefaultEnum<JobState?>(defaultValue: null)
            };

            var jobDefinition = new JobDefinition(name: createJobParams.JobName)
            {
                Properties = properties
            };

            JobDefinition jobDefinitionResult =  this.SchedulerManagementClient.Jobs.CreateOrUpdate(createJobParams.ResourceGroupName, createJobParams.JobCollectionName, createJobParams.JobName, jobDefinition);

            return Converter.ConvertJobDefinitionToPS(jobDefinitionResult);
        }