Example #1
0
        public static void BeginRunJob(string siteUrl, string domain, string userName, SecureString pwd, string RunMode, string options)
        {
            switch (RunMode)
            {
            case "0":
                string defaultExportFolder = (ConfigurationManager.AppSettings["ExportTemplateFolder"]).TrimEnd('\\');
                Console.WriteLine(Environment.NewLine);
                Console.WriteLine("Default Output Folder: " + defaultExportFolder);

                string outputFolder = GetInput("Enter an output folder (enter to use default): ", false, defaultForeground);

                if (string.IsNullOrEmpty(outputFolder))
                {
                    outputFolder = defaultExportFolder;
                }

                var pJob = new Jobs.GetProvisioningXml(siteUrl, domain, userName, pwd);
                pJob.Start(outputFolder);
                break;

            case "1":
                Console.WriteLine("By Default, Provisioning Templates will be source from the 'Resources' Folder within this project.");
                //string defaultProvisioningTemplateDeploymentFolder = (ConfigurationManager.AppSettings["ProvisioningTemplateDeploymentFolder"]).TrimEnd('\\');
                //if (string.IsNullOrEmpty(defaultProvisioningTemplateDeploymentFolder))
                //  defaultProvisioningTemplateDeploymentFolder = ProvisioningHelper.GetDeploymentResourcesPath();

                Console.WriteLine("Default Resource directory Path: " + TEMPLATEDIRECTORYLOCATION);      //defaultProvisioningTemplateDeploymentFolder);
                                                                                                         //string filePath = GetInput("Enter a new File Path (enter to use default): ", false, defaultForeground);

                //if (string.IsNullOrEmpty(filePath))
                //  filePath = defaultProvisioningTemplateDeploymentFolder;

                List <FileInfo> FilesToProcess = DisplayFileTemplateOptions(TEMPLATEDIRECTORYLOCATION, SearchOption.TopDirectoryOnly);
                if (FilesToProcess.Count() <= 0)
                {
                    Console.WriteLine("No Files Selected.");
                    return;
                }
                var rJob = new Jobs.RunProvisioningXml(siteUrl, domain, userName, pwd);

                foreach (var FileToProcess in FilesToProcess)
                {
                    Console.WriteLine();
                    Console.WriteLine("Processing ... " + FileToProcess.Name);
                    if (ValidateSubSiteXml(siteUrl, domain, userName, pwd, FileToProcess.Name))
                    {
                        options = "quiet";
                        rJob.Start(FileToProcess.Name, FileToProcess.Directory, options);
                    }
                    else
                    {
                        WriteErrorToScreen("Attempted to deploy subsite Xml to the root web.  Please enter a subsite URL when running the deployment.");
                    }
                }
                break;

            case "2":
                List <FileInfo> groupsToProcess = DisplayFileTemplateOptions(GROUPSTEMPLATEDIRECTORYLOCATION, SearchOption.TopDirectoryOnly);
                if (groupsToProcess.Count() <= 0)
                {
                    Console.WriteLine("No Files Selected.");
                    return;
                }
                var mJob = new Jobs.ProvisionGroupSites(domain, userName, pwd);
                foreach (var FileToProcess in groupsToProcess)
                {
                    Console.WriteLine();
                    Console.WriteLine("Processing ... " + FileToProcess.Name);
                    if (ValidateSubSiteXml(siteUrl, domain, userName, pwd, FileToProcess.Name))
                    {
                        options = "quiet";
                        mJob.Start(FileToProcess.Name, FileToProcess.Directory);
                    }
                    else
                    {
                        WriteErrorToScreen("Attempted to deploy Xml to a group site.");
                    }
                }
                break;

            case "3":
                var nJob = new Jobs.SubmissionImporter(siteUrl, domain, userName, pwd);
                nJob.Start();
                break;

            case "4":
                var sJob = new Jobs.CreateSitesAndSubsites(siteUrl, domain, userName, pwd);
                sJob.Start();
                break;
            }
        }
Example #2
0
        static void Main(string[] args)
        {
            string defaultSiteUrl  = ConfigurationManager.AppSettings["SharePointSiteUrl"];
            string defaultUserName = ConfigurationManager.AppSettings["UserName"];
            string defaultPassword = ConfigurationManager.AppSettings["Password"];

            //string defaultDomain = ConfigurationManager.AppSettings["Domain"];

            if (args.Length > 0)
            {
                switch (args[0])
                {
                case "deploy-all-stage":
                {
                    var templatePath = (args[1] != null ? args[1].ToString() : "CI.Intranet.Deployment/Templates");
                    var resourcePath = (args[2] != null ? args[2].ToString() : ConfigurationManager.AppSettings["S-ProvisioningResourceFolder"]);

                    defaultSiteUrl  = ConfigurationManager.AppSettings["S-SharePointSiteUrl"];
                    defaultUserName = ConfigurationManager.AppSettings["S-UserName"];
                    defaultPassword = ConfigurationManager.AppSettings["S-Password"];
                    var          searchUrl    = ConfigurationManager.AppSettings["S-SearchSiteUrl"];
                    var          exportFolder = ConfigurationManager.AppSettings["S-ExportTemplateFolder"];
                    SecureString pwd1         = new SecureString();
                    foreach (char c in defaultPassword.ToCharArray())
                    {
                        pwd1.AppendChar(c);
                    }
                    var domain    = string.Empty;
                    var files     = new DirectoryInfo(templatePath);
                    var fileNames = "1-TermSet.xml,2-InformationArchitecture.xml,3-Files.xml".Split(',');
                    var sites     = Properties.Settings.Default.GroupSitesStage;
                    sites.Insert(0, searchUrl);
                    sites.Insert(0, defaultSiteUrl);

                    foreach (var url in sites)
                    {
                        foreach (var file in fileNames)
                        {
                            var rJob = new Jobs.RunProvisioningXml(url, domain, defaultUserName, pwd1);
                            rJob.Start(file, files, "quiet", resourcePath);
                        }
                    }

                    // run search settings
                    var rJobSearch = new Jobs.RunProvisioningXml(searchUrl, domain, defaultUserName, pwd1);
                    rJobSearch.Start("6-Search.xml", files, "quiet", resourcePath);
                    Console.WriteLine("We're done. Press Enter to continue.");
                    Console.ReadLine();
                    return;
                }

                case "deploy-stage":
                {
                    defaultSiteUrl  = ConfigurationManager.AppSettings["S-SharePointSiteUrl"];
                    defaultUserName = ConfigurationManager.AppSettings["S-UserName"];
                    defaultPassword = ConfigurationManager.AppSettings["S-Password"];
                    var          searchUrl      = ConfigurationManager.AppSettings["S-SearchSiteUrl"];
                    var          resourceFolder = ConfigurationManager.AppSettings["S-ProvisioningResourceFolder"];
                    var          exportFolder   = ConfigurationManager.AppSettings["S-ExportTemplateFolder"];
                    SecureString pwd1           = new SecureString();
                    foreach (char c in defaultPassword.ToCharArray())
                    {
                        pwd1.AppendChar(c);
                    }
                    var domain    = string.Empty;
                    var files     = new DirectoryInfo("CI.Intranet.Deployment/Templates");
                    var fileNames = "1-TermSet.xml,2-InformationArchitecture.xml,3-Files.xml".Split(',');
                    var rJob      = new Jobs.RunProvisioningXml(defaultSiteUrl, domain, defaultUserName, pwd1);
                    rJob.Start("3-Files.xml", files, "quiet", resourceFolder);
                    Console.WriteLine("We're done. Press Enter to continue.");
                    Console.ReadLine();
                    return;
                }

                case "deploy-stage-files":
                {
                    defaultSiteUrl  = ConfigurationManager.AppSettings["S-SharePointSiteUrl"];
                    defaultUserName = ConfigurationManager.AppSettings["S-UserName"];
                    defaultPassword = ConfigurationManager.AppSettings["S-Password"];
                    var          searchUrl      = ConfigurationManager.AppSettings["S-SearchSiteUrl"];
                    var          resourceFolder = ConfigurationManager.AppSettings["S-ProvisioningResourceFolder"];
                    var          exportFolder   = ConfigurationManager.AppSettings["S-ExportTemplateFolder"];
                    SecureString pwd1           = new SecureString();
                    foreach (char c in defaultPassword.ToCharArray())
                    {
                        pwd1.AppendChar(c);
                    }
                    var domain    = string.Empty;
                    var files     = new DirectoryInfo("CI.Intranet.Deployment/Templates");
                    var fileNames = "3-Files.xml".Split(',');
                    var rJob      = new Jobs.RunProvisioningXml(defaultSiteUrl, domain, defaultUserName, pwd1);
                    rJob.Start("3-Files.xml", files, "quiet", resourceFolder);
                    Console.WriteLine("We're done. Press Enter to continue.");
                    Console.ReadLine();
                    return;
                }

                case "deploy-all-prod":
                {
                    var templatePath = (args[1] != null ? args[1].ToString() : "CI.Intranet.Deployment/Templates");
                    var resourcePath = (args[2] != null ? args[2].ToString() : ConfigurationManager.AppSettings["P-ProvisioningResourceFolder"]);

                    defaultSiteUrl  = ConfigurationManager.AppSettings["P-SharePointSiteUrl"];
                    defaultUserName = ConfigurationManager.AppSettings["P-UserName"];
                    defaultPassword = ConfigurationManager.AppSettings["P-Password"];
                    var          searchUrl    = ConfigurationManager.AppSettings["P-SearchSiteUrl"];
                    var          exportFolder = ConfigurationManager.AppSettings["P-ExportTemplateFolder"];
                    SecureString pwd1         = new SecureString();
                    foreach (char c in defaultPassword.ToCharArray())
                    {
                        pwd1.AppendChar(c);
                    }
                    var domain    = string.Empty;
                    var files     = new DirectoryInfo(templatePath);
                    var fileNames = "1-TermSet.xml,2-InformationArchitecture.xml,3-Files.xml".Split(',');
                    var sites     = Properties.Settings.Default.GroupSites;
                    sites.Insert(0, searchUrl);
                    sites.Insert(0, defaultSiteUrl);

                    foreach (var url in sites)
                    {
                        Console.WriteLine(url);
                        foreach (var file in fileNames)
                        {
                            var rJob = new Jobs.RunProvisioningXml(url, domain, defaultUserName, pwd1);
                            rJob.Start(file, files, "quiet", resourcePath);
                        }
                    }

                    // run search settings
                    var rJobSearch = new Jobs.RunProvisioningXml(searchUrl, domain, defaultUserName, pwd1);
                    rJobSearch.Start("6-Search.xml", files, "quiet", resourcePath);

                    Console.WriteLine("We're done. Press Enter to continue.");
                    Console.ReadLine();

                    return;
                }
                }
            }

            Console.WriteLine("Default Site Url: " + defaultSiteUrl);
            //Console.WriteLine("Default Domain: " + defaultDomain);
            Console.WriteLine("Default Username: "******"Default Password: (in config file)");

            // Collect information
            string siteUrl = GetInput("Enter the URL of the SharePoint site (enter to use default)", false, defaultForeground);
            //string domain = GetInput("Enter your domain (enter to use default)", false, defaultForeground);
            string userName = GetInput("Enter your user name (enter to use default)", false, defaultForeground);
            string pwdS     = GetInput("Enter your password (enter to use default)", true, defaultForeground);

            if (string.IsNullOrEmpty(siteUrl))
            {
                siteUrl = defaultSiteUrl;
            }

            /*
             * if (string.IsNullOrEmpty(domain))
             *  domain = defaultDomain;
             */
            if (string.IsNullOrEmpty(userName))
            {
                userName = defaultUserName;
            }


            if (string.IsNullOrEmpty(pwdS))
            {
                pwdS = defaultPassword;
            }

            SecureString pwd = new SecureString();

            foreach (char c in pwdS.ToCharArray())
            {
                pwd.AppendChar(c);
            }


            ClientContext ctx;

            ctx = new OfficeDevPnP.Core.AuthenticationManager().GetSharePointOnlineAuthenticatedContextTenant(siteUrl, userName, pwdS);

            // Test connection by outputing the site title
            Web web = ctx.Web;

            ctx.Load(web, w => w.Title);
            ctx.Load(web, w => w.Url);
            ctx.ExecuteQueryRetry();

            Console.WriteLine("Site Title: {0}", web.Title);
            Console.WriteLine("Site URL: {0}", web.Url);

            DisplayJobRunOptions(siteUrl, "", userName, pwd, "");

            // Pause and modify the UI to indicate that the operation is complete
            Console.ForegroundColor = ConsoleColor.White;
            Console.WriteLine("We're done. Press Enter to continue.");
            Console.ReadLine();
        }