remove user from a servicnow group from array of user sys_ids

levino
Giga Guru

hi there

 

very similar to the attached script i need a script for following scenario

 

array of sys_user id, in some instances there will only be 1 sys_id

group name will be specified
remove servicenow group members with the list from the array


if user from the array is not a member , skip that user and itereate to the next user

 

please provide me with missing bits in my script below

 

Thank You

Levino

 

 

 

workflow.scratchpad.Description = current.variables.description;
workflow.scratchpad.NewGroupName = current.variables.new_group_name;

var gr = new GlideRecord('sys_user_group'); //To create group


gr.initialize();

gr.name = workflow.scratchpad.NewGroupName;
gr.type = 'a23a29e8dbec8850304c147a3a96191f';
gr.description = workflow.scratchpad.Description;


gr.setWorkflow(false);
gr.autoSysFields(false);
gr.sys_updated_by = 'admin_sp';
gr.sys_created_by = 'admin_sp';
gr.company = 'd9057fc1db98d7005070326f7c961926';
var grSysid = gr.insert();

hi 

3 REPLIES 3

Anand Kumar P
Giga Patron
Giga Patron

Hi @levino ,

Use below script and replace user sys_id with actual variable where you are getting user sys_id.

 

var description = workflow.scratchpad.Description;
var newGroupName = workflow.scratchpad.NewGroupName;
var userArray = ['Usersys_id_1', 'Usersys_id_2', 'Usersys_id_3']; 
var group = new GlideRecord('sys_user_group');
if (group.get('name', newGroupName)) {
    for (var i = 0; i < userArray.length; i++) {
        var userId = userArray[i];
        var member = new GlideRecord('sys_user_grmember');
        member.addQuery('user', userId);
        member.addQuery('group', group.sys_id);
        member.query();
        if (member.next()) {
            member.deleteRecord();
            gs.log('User ' + userId + ' removed from group ' + group.name);
        } else {
            gs.log('User ' + userId + ' is not a member of group ' + group.name);
        }
    }
} else {
    gs.log('Group ' + newGroupName + ' not found');
}

 

Please mark it as helpful and solution proposed if its serves your purpose.

Thanks,

Anand

Hi Anand

the below evaluates to false , the user not member , even though user is member of

 

var newGroupName = 'Service Desk';
var userArray = ['d6266a10c0a8016700a11212dabddd67']; 
var group = new GlideRecord('sys_user_group'); 
if (group.get('name', newGroupName)) 
{ for (var i = 0; i < userArray.length; i++) 
{ var userId = userArray[i]; 
var member = new GlideRecord('sys_user_grmember'); 
member.addQuery('user', userId); 
member.addQuery('group', group.sys_id); 
member.query(); 
if (member.next()) 
{  gs.print('User ' + userId + ' removed from group ' + group.name); } 

else { gs.print('User ' + userId + ' is not a member of group ' + group.name); } } } 
else { gs.print('Group ' + newGroupName + ' not found'); }

Anand Kumar P
Giga Patron
Giga Patron

Hi @levino 

Please mark it as solution proposed if its serves your purpose.
Thanks,

Anand