RhinoEcmaError
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-12-2023 03:44 AM
Hi Team,
I have written the below code with the background script and i have got the error, what does it mean please assist me to fix it
var gr = new GlideRecord("sys_user");
gr.addEncoddedQuery('active=false^user_nameSTARTSWITHvs000986');
var gdt = new GlideDateTime();
gdt.addDays(-30);
gr.addQuery("last_login_time", "<=", gdt);
gr.addActiveQuery();
gr.query();
while (gr.next()){
gr.active = false;
gr.update();
}
var userName = getUsers.getDisplayValue('sys_id');
var grMember = new GlideRecord('sys_user_grmember');
grMember.addQuery('sys_id=' + userName);
grMember.query();
while (grMember.next()) {
grMember.deleteRecord();
}
var chkRole = new GlideRecord('sys_user_has_role');
chkRole.addQuery('sys_id=' + userName);
chkRole.query();
while (chkRole.next()) {
//Delete left over roles
chkRole.deleteRecord();
gr.updateMultiple();
gs.log('record' +gr.getRowCount());
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-12-2023 03:51 AM
I think you have missed adding complete script here.
if not, then what is getUsers ? is this object or variable.
I see you are trying to use 'userName' later in script which is expecting sys_id.
answer above question to help you better.
and the error you are getting is because getDisplayValue() is not supposed to work on sys_id field if you want to have sys_id and getUsers is object of user then use following
var userName = getUsers.sys_id;
Regards,Sushant Malsure

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-12-2023 03:53 AM
Hi @Rajesh77 ,
Update your script as:
var users = [];
var gr = new GlideRecord("sys_user");
gr.addEncodedQuery('active=false^user_nameSTARTSWITHvs000986');
var gdt = new GlideDateTime();
gdt.addDays(-30);
gr.addQuery("last_login_time", "<=", gdt);
gr.addActiveQuery();
gr.query();
while (gr.next()){
users.push(gr.getUniqueValue());
gr.active = false;
gr.update();
}
for(var i=0; i<users.length;i++){
var grMember = new GlideRecord('sys_user_grmember');
grMember.addQuery('user', users[i]);
grMember.query();
while (grMember.next()) {
grMember.deleteRecord();
}
var chkRole = new GlideRecord('sys_user_has_role');
chkRole.addQuery('user', users[i]);
chkRole.query();
while (chkRole.next()) {
//Delete left over roles
chkRole.deleteRecord();
}
gs.log('record' +gr.getRowCount());
}
Aman Kumar
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-12-2023 03:57 AM
my concern is there are users who have not logged in the instance for more than 30 days we need to revoke their license and if they have been added in any group we need to remove them from the groups and we need to send an email notification to them
Below is the script i have written if its wrong pls give me the correct script
var gr = new GlideRecord("sys_user");
gr.addEncoddedQuery('active=false^roles=ITIL');
var gdt = new GlideDateTime();
gdt.addDays(-30);
gr.addQuery("last_login_time", "<=", gdt);
gr.addActiveQuery();
gr.query();
while (gr.next()){
gr.active = false;
gr.update();
}
//Set the users name to a variable.
var userName = gr.getDisplayValue('sys_id');
//Check the group membership table to see if they are a member of any groups
var grMember = new GlideRecord('sys_user_grmember');
grMember.addQuery('sys_id=' + userName);
grMember.query();
while (grMember.next()) {
grMember.deleteRecord();
}
//Now let's check the roles table to ensure nothing was left behind
var chkRole = new GlideRecord('sys_user_has_role');
chkRole.addQuery('sys_id=' + userName);
chkRole.query();
while (chkRole.next()) {
//Delete left over roles
chkRole.deleteRecord();
gr.updateMultiple();
gs.log('record' +gr.getRowCount());
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-12-2023 04:10 AM
var gr = new GlideRecord("sys_user");
gr.addEncoddedQuery('active=false^roles=ITIL');
var gdt = new GlideDateTime();
gdt.addDays(-30);
gr.addQuery("last_login_time", "<=", gdt);
gr.addActiveQuery();
gr.query();
while (gr.next()){
gr.active = false;
//Set the users name to a variable.
var userName = gr.sys_id;
//Check the group membership table to see if they are a member of any groups
var grMember = new GlideRecord('sys_user_grmember');
grMember.addQuery('user',userName);
grMember.query();
while (grMember.next()) {
grMember.deleteRecord();
}
//Now let's check the roles table to ensure nothing was left behind
var chkRole = new GlideRecord('sys_user_has_role');
chkRole.addQuery('user', userName);
chkRole.query();
while (chkRole.next()) {
//Delete left over roles
chkRole.deleteRecord();
}
gr.update();
}
Have done some modifications please check and test
Regards,Sushant Malsure