protected override void ExecuteCmdlet() { var list = List.GetListOrThrow(nameof(List), CurrentWeb); var ctId = ContentType.GetIdOrThrow(nameof(ContentType), list); list.SetDefaultContentType(ctId); }
protected override void ExecuteCmdlet() { IPage clientSidePage = null; // Check if the page exists string name = PageUtilities.EnsureCorrectPageName(Name); bool pageExists = false; try { var pages = PnPContext.Web.GetPages(name); if (pages != null && pages.FirstOrDefault(p => p.Name.Equals(name, StringComparison.InvariantCultureIgnoreCase)) != null) { pageExists = true; } } catch { } if (pageExists) { throw new Exception($"Page {name} already exists"); } // Create a page that persists immediately clientSidePage = PnPContext.Web.NewPage(LayoutType); clientSidePage.PageHeader.LayoutType = HeaderLayoutType; if (PromoteAs == PagePromoteType.Template) { clientSidePage.SaveAsTemplate(name); } else { clientSidePage.Save(name); } if (ContentType != null) { string ctId = ContentType.GetIdOrThrow(nameof(ContentType), CurrentWeb); var pageFile = clientSidePage.GetPageFile(p => p.UniqueId, p => p.ListId, p => p.ListItemAllFields); pageFile.ListItemAllFields["ContentTypeId"] = ctId; pageFile.ListItemAllFields.SystemUpdate(); } // If a specific promote type is specified, promote the page as Home or Article or ... switch (PromoteAs) { case PagePromoteType.HomePage: clientSidePage.PromoteAsHomePage(); break; case PagePromoteType.NewsArticle: clientSidePage.PromoteAsNewsArticle(); break; case PagePromoteType.None: default: break; } if (ParameterSpecified(nameof(CommentsEnabled))) { if (CommentsEnabled) { clientSidePage.EnableComments(); } else { clientSidePage.DisableComments(); } } if (Publish) { clientSidePage.Publish(); } WriteObject(clientSidePage); }
protected override void ExecuteCmdlet() { if (ParameterSetName == ParameterSet_ASFILE) { if (!System.IO.Path.IsPathRooted(Path)) { Path = System.IO.Path.Combine(SessionState.Path.CurrentFileSystemLocation.Path, Path); } if (string.IsNullOrEmpty(NewFileName)) { FileName = System.IO.Path.GetFileName(Path); } else { FileName = NewFileName; } } var folder = EnsureFolder(); var fileUrl = UrlUtility.Combine(folder.ServerRelativeUrl, FileName); string targetContentTypeId = null; // Check to see if the Content Type exists. If it doesn't we are going to throw an exception and block this transaction right here. if (ContentType != null) { CurrentWeb.EnsureProperty(w => w.ServerRelativeUrl); var list = CurrentWeb.GetListByUrl(folder.ServerRelativeUrl.Substring(CurrentWeb.ServerRelativeUrl.TrimEnd('/').Length + 1)); if (list is null) { throw new PSArgumentException("The folder specified does not have a corresponding list", nameof(Folder)); } targetContentTypeId = ContentType?.GetIdOrThrow(nameof(ContentType), list); } // Check if the file exists if (Checkout) { try { var existingFile = CurrentWeb.GetFileByServerRelativePath(ResourcePath.FromDecodedUrl(fileUrl)); existingFile.EnsureProperty(f => f.Exists); if (existingFile.Exists) { CurrentWeb.CheckOutFile(fileUrl); } } catch { // Swallow exception, file does not exist } } Microsoft.SharePoint.Client.File file; if (ParameterSetName == ParameterSet_ASFILE) { file = folder.UploadFile(FileName, Path, true); } else { file = folder.UploadFile(FileName, Stream, true); } bool updateRequired = false; var item = file.ListItemAllFields; if (Values != null) { ListItemHelper.SetFieldValues(item, Values, this); updateRequired = true; } if (ContentType != null) { item["ContentTypeId"] = targetContentTypeId; updateRequired = true; } if (updateRequired) { item.SystemUpdate(); } if (Checkout) { CurrentWeb.CheckInFile(fileUrl, CheckinType.MajorCheckIn, CheckInComment); } if (Publish) { CurrentWeb.PublishFile(fileUrl, PublishComment); } if (Approve) { CurrentWeb.ApproveFile(fileUrl, ApproveComment); } ClientContext.Load(file); ClientContext.ExecuteQueryRetry(); WriteObject(file); }