protected override void ProcessRecord() { if (!this.CanFindAccount(Identity, AccountType.Role)) { return; } var name = ParameterSetName == "Id" ? Identity.Name : Instance.Name; if (!ShouldProcess(name, "Remove role")) { return; } var role = Role.FromName(name); if (!role.IsEveryone) { var usersInRoles = Roles.GetUsersInRole(name); if (usersInRoles.Any()) { Roles.RemoveUsersFromRole(usersInRoles, name); } if (RolesInRolesManager.RolesInRolesSupported) { var rolesInRole = RolesInRolesManager.GetRolesForRole(role, false); if (rolesInRole.Any()) { RolesInRolesManager.RemoveRolesFromRole(rolesInRole, role); } } Roles.DeleteRole(name, true); } else { WriteError(typeof(SecurityException), $"Cannot remove role '{name}'.", ErrorIds.InsufficientSecurityRights, ErrorCategory.PermissionDenied, name); } }