protected override void ExecuteCmdlet() { // Validate user inputs RoleDefinition roleDefinition = null; try { roleDefinition = ClientContext.Site.RootWeb.RoleDefinitions.GetByName(RoleName); ClientContext.Load(roleDefinition); ClientContext.ExecuteQuery(); } catch { } if (roleDefinition.ServerObjectIsNull == null) { var spRoleDef = new RoleDefinitionCreationInformation(); var spBasePerm = new BasePermissions(); if (ParameterSpecified(nameof(Clone))) { var clonePerm = Clone.GetRoleDefinition(ClientContext.Site); spBasePerm = clonePerm.BasePermissions; } // Include and Exclude Flags if (ParameterSpecified(nameof(Include))) { foreach (var flag in Include) { spBasePerm.Set(flag); } } if (ParameterSpecified(nameof(Exclude))) { foreach (var flag in Exclude) { spBasePerm.Clear(flag); } } // Create Role Definition spRoleDef.Name = RoleName; spRoleDef.Description = Description; spRoleDef.BasePermissions = spBasePerm; roleDefinition = ClientContext.Site.RootWeb.RoleDefinitions.Add(spRoleDef); ClientContext.Load(roleDefinition); ClientContext.ExecuteQueryRetry(); WriteObject(roleDefinition); } else { WriteWarning($"Unable to add Role Definition as there is an existing role definition with the same name. Will be skipped."); } }