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