fix upn for users and activeusers command #7409

Signed-off-by: si458 <simonsmith5521@gmail.com>

si458 committed Jan 31, 2026 at 13:07 UTC 9a227b8f5a320e744c6c53fff0d3d362864476a6
1 file changed +48 -20
agents/meshcore.js
+48 -20
@@ -791,9 +791,8 @@ function onUserSessionChanged(user, locked) {
791 var userobj = getLogonCacheKeys();
792 if(userobj && userobj.length > 0){
793 for (var j = 0; j < userobj.length; j++) {
794 - var u = userobj[j];
795 - if (u && u.SAM && u.SAM[0].trim() === a[i].Username) {
796 - meshCoreObj.upnusers.push(u.UPN);
794 + if (userobj[j] && userobj[j].SAM && userobj[j].SAM[0].trim() === a[i].Username) {
795 + meshCoreObj.upnusers.push(userobj[j].UPN);
796 break;
797 }
798 }
@@ -805,9 +804,8 @@ function onUserSessionChanged(user, locked) {
804 var userobj = getLogonCacheKeys();
805 if(userobj && userobj.length > 0){
806 for (var j = 0; j < userobj.length; j++) {
808 - var u = userobj[j];
809 - if (u && u.SAM && u.SAM.length == 0 && u.UPN && u.UPN != '') {
810 - meshCoreObj.upnusers.push(u.UPN);
807 + if (userobj[j] && userobj[j].SAM && userobj[j].SAM.length == 0 && userobj[j].UPN && userobj[j].UPN != '') {
808 + meshCoreObj.upnusers.push(userobj[j].UPN);
809 break;
810 }
811 }
@@ -4901,18 +4899,32 @@ function processConsoleCommand(cmd, args, rights, sessionid) {
4899 var ret = getDomainInfo();
4900 for (var i in u) {
4901 if (u[i].State == 'Active') {
4904 - if (u[i].Domain != null && u[i].Domain == 'AzureAD'){
4905 - // AzureAD to-do
4906 - // var userGUID = require('win-registry').QueryKey(require('win-registry').HKEY.LocalMachine, 'SYSTEM\\CurrentControlSet\\Control\\CloudDomainJoin\\JoinInfo');
4907 - // if (userGUID != null){
4908 - // var user = require('win-registry').QueryKey(require('win-registry').HKEY.LocalMachine, 'SYSTEM\\CurrentControlSet\\Control\\CloudDomainJoin\\JoinInfo\\' + userGUID.subkeys[0], 'UserEmail');
4909 - // if (user != null) u[i].UPN = user;
4910 - // }
4902 + if ((u[i].Domain != null && u[i].Domain == 'AzureAD') || getJoinState() == 1){
4903 + var userobj = getLogonCacheKeys();
4904 + if(userobj && userobj.length > 0){
4905 + for (var j = 0; j < userobj.length; j++) {
4906 + if (userobj[j] && userobj[j].SAM && userobj[j].SAM[0].trim() === u[i].Username) {
4907 + u[i].UPN = userobj[j].UPN
4908 + break;
4909 + }
4910 + }
4911 + }
4912 } else if (u[i].Domain != null) {
4913 if (ret != null && ret.PartOfDomain === true) {
4914 u[i].UPN = u[i].Username + '@' + ret.Domain;
4915 + } else if (getJoinState() == 8) { // One account with Microsoft Account
4916 + var userobj = getLogonCacheKeys();
4917 + if(userobj && userobj.length > 0){
4918 + for (var j = 0; j < userobj.length; j++) {
4919 + if (userobj[j] && userobj[j].SAM && userobj[j].SAM.length == 0 && userobj[j].UPN && userobj[j].UPN != '') {
4920 + u[i].UPN = userobj[j].UPN;
4921 + break;
4922 + }
4923 + }
4924 + }
4925 }
4926 }
4927 + if (u[i].UPN == null) { u[i].UPN = ''; }
4928 v.push({ tsid: i, type: u[i].StationName, user: u[i].Username, domain: u[i].Domain, upn: u[i].UPN });
4929 }
4930 }
@@ -5128,18 +5140,34 @@ function processConsoleCommand(cmd, args, rights, sessionid) {
5140 require('user-sessions').enumerateUsers().then(function (u) {
5141 var ret = getDomainInfo();
5142 for (var i in u) {
5131 - if (u[i].Domain != null && u[i].Domain == 'AzureAD'){
5132 - // AzureAD to-do
5133 - // var userGUID = require('win-registry').QueryKey(require('win-registry').HKEY.LocalMachine, 'SYSTEM\\CurrentControlSet\\Control\\CloudDomainJoin\\JoinInfo');
5134 - // if (userGUID != null){
5135 - // var user = require('win-registry').QueryKey(require('win-registry').HKEY.LocalMachine, 'SYSTEM\\CurrentControlSet\\Control\\CloudDomainJoin\\JoinInfo\\' + userGUID.subkeys[0], 'UserEmail');
5136 - // if (user != null) u[i].UPN = user;
5137 - // }
5143 + if ((u[i].Domain != null && u[i].Domain == 'AzureAD') || getJoinState() == 1){
5144 + var userobj = getLogonCacheKeys();
5145 + if(userobj && userobj.length > 0){
5146 + for (var j = 0; j < userobj.length; j++) {
5147 + var a = userobj[j];
5148 + if (a && a.SAM && a.SAM[0].trim() === u[i].Username) {
5149 + u[i].UPN = a.UPN
5150 + break;
5151 + }
5152 + }
5153 + }
5154 } else if (u[i].Domain != null) {
5155 if (ret != null && ret.PartOfDomain === true) {
5156 u[i].UPN = u[i].Username + '@' + ret.Domain;
5157 + } else if (getJoinState() == 8) { // One account with Microsoft Account
5158 + var userobj = getLogonCacheKeys();
5159 + if(userobj && userobj.length > 0){
5160 + for (var j = 0; j < userobj.length; j++) {
5161 + var a = userobj[j];
5162 + if (a && a.SAM && a.SAM.length == 0 && a.UPN && a.UPN != '') {
5163 + u[i].UPN = a.UPN;
5164 + break;
5165 + }
5166 + }
5167 + }
5168 }
5169 }
5170 + if (u[i].UPN == null) { u[i].UPN = ''; }
5171 sendConsoleText(u[i]);
5172 }
5173 });