public IEnumerable <EntityImageProfileSysprepTag> GetSysprep(int id)
 {
     return(_imageProfileService.GetImageProfileSysprep(id));
 }
Example #2
0
        public string Execute(string multicastPort = "")
        {
            var preScripts        = "\"";
            var beforeFileScripts = "\"";
            var afterFileScripts  = "\"";

            foreach (var script in _imageProfileServices.GetImageProfileScripts(_imageProfile.Id))
            {
                if (script.RunWhen == EnumProfileScript.RunWhen.BeforeImaging)
                {
                    preScripts += script.ScriptModuleId + " ";
                }
                else if (script.RunWhen == EnumProfileScript.RunWhen.BeforeFileCopy)
                {
                    beforeFileScripts += script.ScriptModuleId + " ";
                }
                else if (script.RunWhen == EnumProfileScript.RunWhen.AfterFileCopy)
                {
                    afterFileScripts += script.ScriptModuleId + " ";
                }
            }
            beforeFileScripts += "\"";
            afterFileScripts  += "\"";
            preScripts        += "\"";

            var sysprepTags = "\"";

            foreach (var sysprepTag in _imageProfileServices.GetImageProfileSysprep(_imageProfile.Id))
            {
                sysprepTags += sysprepTag.SysprepModuleId + " ";
            }

            sysprepTags  = sysprepTags.Trim();
            sysprepTags += "\"";

            var areFilesToCopy = _imageProfileServices.GetImageProfileFileCopy(_imageProfile.Id).Any();

            //On demand computer may be null if not registered
            if (_computer != null)
            {
                AppendString("computer_name=" + _computer.Name.Split(':').First());
                //AppendString("computer_id=" + _computer.Id);
            }

            AppendString("image_name=" + _imageProfile.Image.Name);
            AppendString("profile_id=" + _imageProfile.Id);
            AppendString("pre_scripts=" + preScripts);
            AppendString("before_file_scripts=" + beforeFileScripts);
            AppendString("after_file_scripts=" + afterFileScripts);
            AppendString("file_copy=" + areFilesToCopy);
            AppendString("sysprep_tags=" + sysprepTags);


            if (Convert.ToBoolean(_imageProfile.WebCancel))
            {
                AppendString("web_cancel=true");
            }
            AppendString("task_completed_action=" + "\"" + _imageProfile.TaskCompletedAction + "\"");

            if (ServiceSetting.GetSettingValue(SettingStrings.ImageDirectSmb).Equals("True"))
            {
                AppendString("direct_smb=true");
            }

            if (_direction.Contains("upload"))
            {
                AppendString("image_type=" + _imageProfile.Image.Type);
                if (Convert.ToBoolean(_imageProfile.RemoveGPT))
                {
                    AppendString("remove_gpt_structures=true");
                }
                if (Convert.ToBoolean(_imageProfile.SkipShrinkVolumes))
                {
                    AppendString("skip_shrink_volumes=true");
                }
                if (Convert.ToBoolean(_imageProfile.SkipShrinkLvm))
                {
                    AppendString("skip_shrink_lvm=true");
                }
                AppendString("compression_algorithm=" + _imageProfile.Compression);
                AppendString("compression_level=-" + _imageProfile.CompressionLevel);
                if (Convert.ToBoolean(_imageProfile.UploadSchemaOnly))
                {
                    AppendString("upload_schema_only=true");
                }
                if (Convert.ToBoolean(_imageProfile.SimpleUploadSchema))
                {
                    AppendString("simple_upload_schema=true");
                }

                if (!string.IsNullOrEmpty(_imageProfile.CustomUploadSchema))
                {
                    AppendString("custom_upload_schema=true");
                    SetCustomSchemaUpload();
                }
                if (Convert.ToBoolean(_imageProfile.SkipBitlockerCheck))
                {
                    AppendString("skip_bitlocker_check=true");
                }
                if (Convert.ToBoolean(_imageProfile.SkipHibernationCheck))
                {
                    AppendString("skip_hibernation_check=true");
                }
            }
            else // push or multicast
            {
                //check for null in case of on demand
                if (_computer != null)
                {
                    var computerAttributes = new ServiceComputer().GetCustomAttributes(_computer.Id);
                    var serviceAttribute   = new ServiceCustomAttribute();
                    foreach (var attribute in computerAttributes)
                    {
                        var compAttrib = serviceAttribute.GetCustomAttribute(attribute.CustomAttributeId);
                        if (!string.IsNullOrEmpty(attribute.Value))
                        {
                            if (compAttrib.ClientImagingAvailable)
                            {
                                AppendString(compAttrib.Name + "=" + "\"" + attribute.Value + "\"");
                            }
                        }
                    }
                }


                if (Convert.ToBoolean(_imageProfile.ChangeName))
                {
                    AppendString("change_computer_name=true");
                }
                if (Convert.ToBoolean(_imageProfile.SkipExpandVolumes))
                {
                    AppendString("skip_expand_volumes=true");
                }
                if (Convert.ToBoolean(_imageProfile.FixBcd))
                {
                    AppendString("fix_bcd=true");
                }
                if (Convert.ToBoolean(_imageProfile.RandomizeGuids))
                {
                    AppendString("randomize_guids=true");
                }
                if (Convert.ToBoolean(_imageProfile.ForceStandardLegacy))
                {
                    AppendString("force_legacy_layout=true");
                }
                if (Convert.ToBoolean(_imageProfile.ForceStandardEfi))
                {
                    AppendString("force_efi_layout=true");
                }
                if (Convert.ToBoolean(_imageProfile.SkipNvramUpdate))
                {
                    AppendString("skip_nvram=true");
                }
                if (Convert.ToBoolean(_imageProfile.FixBootloader))
                {
                    AppendString("fix_bootloader=true");
                }

                if (Convert.ToBoolean(_imageProfile.ForceDynamicPartitions))
                {
                    AppendString("force_dynamic_partitions=true");
                }
                AppendString(SetPartitionMethod());
                if (!string.IsNullOrEmpty(_imageProfile.CustomSchema))
                {
                    AppendString("custom_deploy_schema=true");
                    SetCustomSchemaDeploy();
                }
                if (_direction.Contains("multicast"))
                {
                    var comServer = new ServiceClientComServer().GetServer(_comServerId);
                    if (comServer.DecompressImageOn == "client")
                    {
                        AppendString("decompress_multicast_on_client=true");
                    }
                    if (string.IsNullOrEmpty(_imageProfile.ReceiverArguments))
                    {
                        AppendString("client_receiver_args=" + "\"" + comServer.MulticastReceiverArguments + "\"");
                    }
                    else
                    {
                        AppendString("client_receiver_args=" + "\"" + _imageProfile.ReceiverArguments + "\"");
                    }

                    AppendString("multicast_port=" + multicastPort);
                    AppendString("multicast_server_ip=" + comServer.MulticastInterfaceIp);
                }
            }

            return(_activeTaskArguments.ToString());
        }