/// <summary>
        /// Process
        /// </summary>
        protected override void ProcessRecord()
        {
            var view = RestApiCommon.GetViewByName(Session.ApiClient, SourceViewName);

            var cloneRequest = new Models.CloneTaskRequest(name: TaskName)
            {
                Type            = Models.CloneTaskRequest.TypeEnum.KCloneView,
                ContinueOnError = true,
            };

            var cloneViewParams = new Models.CloneView_
            {
                SourceViewName = SourceViewName,
                CloneViewName  = TargetViewName,
                Description    = TargetViewDescription,
                Qos            = new Models.QoS
                {
                    PrincipalName = QoSPolicy
                }
            };

            cloneRequest.CloneViewParameters = cloneViewParams;

            var cloneObject = new Models.RestoreObject
            {
                JobId = JobId,
                ProtectionSourceId = view.ViewProtection.MagnetoEntityId
            };

            if (JobRunId.HasValue)
            {
                cloneObject.JobRunId = JobRunId;
            }

            if (StartTime.HasValue)
            {
                cloneObject.StartedTimeUsecs = StartTime;
            }

            var objects = new List <Models.RestoreObject>();

            objects.Add(cloneObject);

            cloneRequest.Objects = objects;

            // POST /public/restore/clone
            var preparedUrl = $"/public/restore/clone";
            var result      = Session.ApiClient.Post <Models.RestoreTask>(preparedUrl, cloneRequest);

            WriteObject(result);
        }
        /// <summary>
        /// Process
        /// </summary>
        protected override void ProcessRecord()
        {
            var cloneRequest = new Models.CloneTaskRequest(name: TaskName)
            {
                Type            = Models.CloneTaskRequest.TypeEnum.KCloneVMs,
                ContinueOnError = true,
                TargetViewName  = TargetViewName
            };

            var vmwareParams = new Models.VmwareCloneParameters();

            if (PoweredOn.IsPresent)
            {
                vmwareParams.PoweredOn = PoweredOn;
            }
            if (DisableNetwork.IsPresent)
            {
                vmwareParams.DisableNetwork = true;
            }
            if (VmNamePrefix != null)
            {
                vmwareParams.Prefix = VmNamePrefix;
            }
            if (VmNameSuffix != null)
            {
                vmwareParams.Suffix = VmNameSuffix;
            }
            if (DatastoreFolderId.HasValue)
            {
                vmwareParams.DatastoreFolderId = DatastoreFolderId;
            }
            if (NetworkId.HasValue)
            {
                vmwareParams.NetworkId = NetworkId;
            }
            if (ResourcePoolId.HasValue)
            {
                vmwareParams.ResourcePoolId = ResourcePoolId;
            }
            if (VmFolderId.HasValue)
            {
                vmwareParams.VmFolderId = VmFolderId;
            }

            cloneRequest.VmwareParameters = vmwareParams;

            var cloneObject = new Models.RestoreObject
            {
                JobId = JobId,
                ProtectionSourceId = SourceId
            };

            if (JobRunId.HasValue)
            {
                cloneObject.JobRunId = JobRunId;
            }

            if (NewParentId.HasValue)
            {
                cloneRequest.NewParentId = NewParentId;
            }

            if (StartTime.HasValue)
            {
                cloneObject.StartedTimeUsecs = StartTime;
            }

            var objects = new List <Models.RestoreObject>();

            objects.Add(cloneObject);

            cloneRequest.Objects = objects;

            // POST /public/restore/clone
            var preparedUrl = $"/public/restore/clone";
            var result      = Session.ApiClient.Post <Models.RestoreTask>(preparedUrl, cloneRequest);

            WriteObject(result);
        }