protected override void ExecuteCmdlet() { var list = List.GetListOrThrow(nameof(List), CurrentWeb, l => l.RootFolder, l => l.ContentTypes); var listContentType = ContentType.GetContentType(list); if (listContentType is null) { var siteContentType = ContentType.GetContentTypeOrThrow(nameof(ContentType), CurrentWeb); listContentType = new ContentTypePipeBind(siteContentType.Name).GetContentTypeOrThrow(nameof(ContentType), list); } listContentType.EnsureProperty(ct => ct.StringId); if (!listContentType.StringId.StartsWith("0x0120D520")) { throw new PSArgumentException($"Content type '{ContentType}' does not inherit from the base Document Set content type. Document Set content type IDs start with 0x120D520"); } // Create the document set var result = DocumentSet.Create(ClientContext, list.RootFolder, Name, listContentType.Id); ClientContext.ExecuteQueryRetry(); WriteObject(result.Value); }
protected override void ExecuteCmdlet() { if (Identity != null) { // NOTE: Currently only supports List Webhooks if (ParameterSpecified(nameof(List))) { // Get the list from the currently selected web List list = List.GetListOrThrow(nameof(List), CurrentWeb); if (list != null) { // Ensure we have list Id (and Title for the confirm message) list.EnsureProperties(l => l.Id, l => l.Title); // Check the Force switch of ask confirm if (Force || ShouldContinue(string.Format(Properties.Resources.RemoveWebhookSubscription0From1_2, Identity.Id, Properties.Resources.List, list.Title), Properties.Resources.Confirm)) { // Remove the Webhook subscription for the specified Id list.RemoveWebhookSubscription(Identity.Subscription); } } } else { throw new PSNotImplementedException("This Cmdlet only supports List Webhooks currently"); } } }
protected override void ExecuteCmdlet() { var group = Identity.GetGroup(PnPContext); PnP.Core.Model.SharePoint.IList list = null; if (ParameterSpecified(nameof(List))) { list = List.GetListOrThrow(nameof(List), PnPContext); } if (AddRole != null) { if (ParameterSpecified(nameof(List))) { list.AddRoleDefinitions(group.Id, AddRole); } else { group.AddRoleDefinitions(AddRole); } } if (RemoveRole != null) { if (ParameterSpecified(nameof(List))) { list.RemoveRoleDefinitions(group.Id, RemoveRole); } else { group.RemoveRoleDefinitions(RemoveRole); } } }
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() { var list = List.GetListOrThrow(nameof(List), CurrentWeb); var ct = ContentType.GetContentTypeOrWarn(this, list); if (ct != null) { CurrentWeb.RemoveContentTypeFromList(list, ct); } }
protected override void ExecuteCmdlet() { if (List != null) { var list = List?.GetListOrThrow(nameof(List), CurrentWeb); if (Identity != null) { var ct = Identity.GetContentTypeOrError(this, nameof(Identity), list); if (ct is null) { return; } WriteObject(ct, false); } else { var cts = ClientContext.LoadQuery(list.ContentTypes.Include(ct => ct.Id, ct => ct.Name, ct => ct.StringId, ct => ct.Group)); ClientContext.ExecuteQueryRetry(); WriteObject(cts, true); } } else { if (Identity != null) { var ct = Identity.GetContentTypeOrError(this, nameof(Identity), CurrentWeb, InSiteHierarchy); if (ct is null) { return; } WriteObject(ct, false); } else { var cts = InSiteHierarchy ? ClientContext.LoadQuery(CurrentWeb.AvailableContentTypes) : ClientContext.LoadQuery(CurrentWeb.ContentTypes); ClientContext.ExecuteQueryRetry(); WriteObject(cts, true); } } }
protected override void ExecuteCmdlet() { if (!System.IO.Path.IsPathRooted(Path)) { Path = System.IO.Path.Combine(SessionState.Path.CurrentFileSystemLocation.Path, Path); } var template = ProvisioningHelper.LoadSiteTemplateFromFile(Path, TemplateProviderExtensions, (e) => { WriteError(new ErrorRecord(e, "TEMPLATENOTVALID", ErrorCategory.SyntaxError, null)); }); if (template == null) { throw new ApplicationException("Invalid template file!"); } // We will remove a list if it's found so we can get the list List spList = List.GetListOrThrow(nameof(List), CurrentWeb, l => l.RootFolder, l => l.HasUniqueRoleAssignments); ListInstance listInstance = template.Lists.Find(l => l.Title == spList.Title); if (listInstance == null) { throw new ApplicationException("List does not exist in the template file!"); } ClientContext.Load(ClientContext.Web, w => w.Url, w => w.ServerRelativeUrl, w => w.Id); ClientContext.Load(ClientContext.Site, s => s.Url, s => s.ServerRelativeUrl, s => s.Id); CamlQuery query = new CamlQuery(); var viewFieldsStringBuilder = new StringBuilder(); if (Fields != null) { viewFieldsStringBuilder.Append("<ViewFields>"); foreach (var field in Fields) { viewFieldsStringBuilder.AppendFormat("<FieldRef Name='{0}'/>", field); } viewFieldsStringBuilder.Append("</ViewFields>"); } query.ViewXml = string.Format("<View>{0}{1}</View>", Query, viewFieldsStringBuilder); var listItems = spList.GetItems(query); ClientContext.Load(listItems, lI => lI.Include(l => l.HasUniqueRoleAssignments, l => l.ContentType.StringId)); ClientContext.ExecuteQueryRetry(); Microsoft.SharePoint.Client.FieldCollection fieldCollection = spList.Fields; ClientContext.Load(fieldCollection, fs => fs.Include(f => f.InternalName, f => f.FieldTypeKind, f => f.ReadOnlyField)); ClientContext.ExecuteQueryRetry(); var rows = new DataRowCollection(template); foreach (var listItem in listItems) { // Make sure we don't pull Folders.. Of course this won't work if (listItem.ServerObjectIsNull == false) { ClientContext.Load(listItem); ClientContext.ExecuteQueryRetry(); if (!(listItem.FileSystemObjectType == FileSystemObjectType.Folder)) { DataRow row = new DataRow(); if (IncludeSecurity && listItem.HasUniqueRoleAssignments) { row.Security.ClearSubscopes = true; row.Security.CopyRoleAssignments = false; var roleAssignments = listItem.RoleAssignments; ClientContext.Load(roleAssignments); ClientContext.ExecuteQueryRetry(); ClientContext.Load(roleAssignments, r => r.Include(a => a.Member.LoginName, a => a.Member, a => a.RoleDefinitionBindings)); ClientContext.ExecuteQueryRetry(); foreach (var roleAssignment in roleAssignments) { var principalName = roleAssignment.Member.LoginName; var roleBindings = roleAssignment.RoleDefinitionBindings; foreach (var roleBinding in roleBindings) { row.Security.RoleAssignments.Add(new PnP.Framework.Provisioning.Model.RoleAssignment() { Principal = principalName, RoleDefinition = roleBinding.Name }); } } } if (Fields != null) { foreach (var fieldName in Fields) { Microsoft.SharePoint.Client.Field dataField = fieldCollection.FirstOrDefault(f => f.InternalName == fieldName); if (dataField != null) { var defaultFieldValue = GetFieldValueAsText(ClientContext.Web, listItem, dataField); if (TokenizeUrls.IsPresent) { defaultFieldValue = Tokenize(defaultFieldValue, ClientContext.Web, ClientContext.Site); } row.Values.Add(fieldName, defaultFieldValue); } } } else { // All fields are added except readonly fields and unsupported field type var fieldsToExport = fieldCollection.AsEnumerable() .Where(f => !f.ReadOnlyField && !_unsupportedFieldTypes.Contains(f.FieldTypeKind)); foreach (var field in fieldsToExport) { var fldKey = (from f in listItem.FieldValues.Keys where f == field.InternalName select f).FirstOrDefault(); if (!string.IsNullOrEmpty(fldKey)) { var fieldValue = GetFieldValueAsText(ClientContext.Web, listItem, field); if (TokenizeUrls.IsPresent) { fieldValue = Tokenize(fieldValue, ClientContext.Web, ClientContext.Site); } row.Values.Add(field.InternalName, fieldValue); } } } rows.Add(row); } } } template.Lists.Remove(listInstance); listInstance.DataRows.AddRange(rows); template.Lists.Add(listInstance); var outFileName = System.IO.Path.GetFileName(Path); var outPath = new FileInfo(Path).DirectoryName; var fileSystemConnector = new FileSystemConnector(outPath, ""); var formatter = XMLPnPSchemaFormatter.LatestFormatter; var extension = new FileInfo(Path).Extension.ToLowerInvariant(); if (extension == ".pnp") { XMLTemplateProvider provider = new XMLOpenXMLTemplateProvider(new OpenXMLConnector(Path, fileSystemConnector)); var templateFileName = outFileName.Substring(0, outFileName.LastIndexOf(".", StringComparison.Ordinal)) + ".xml"; provider.SaveAs(template, templateFileName, formatter, TemplateProviderExtensions); } else { XMLTemplateProvider provider = new XMLFileSystemTemplateProvider(Path, ""); provider.SaveAs(template, Path, formatter, TemplateProviderExtensions); } }
protected override void ExecuteCmdlet() { var list = Identity.GetListOrThrow(nameof(List), PnPContext); WriteObject(list.GetRoleDefinitions(PrincipalId)); }