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; } }
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(); }