Hi All,
I would like to ask on how can I extract all the User, Groups and Roles that are registered in SMC? I have this code below but when I trybto use it, it doesn't get me an output.
/*Connect to the metadata server*/
options metaserver="localhost"
metaport=8561
metauser="myuser"
metapass="mypassword"
metarepository="Foundation"
metaprotocol=BRIDGE;
data users_grps_roles;
length uri name DisplayName grp groupuri $256 grptype $5 id MDUpdate $20;
/*Initialize variables to missing*/
n=1;
uri='';
name='';
Displayname='';
grp='';
groupuri='';
grptype='';
id='';
MDUpdate='';
/*Determine how many person objects are defined*/
nobj=metadata_getnobj("omsobj:Person?@Id contains '.'",n,uri);
if nobj=0 then
put 'No Persons available.';
else
do while (nobj > 0);
/*Retrieve the current person's name*/
rc=metadata_getattr(uri, "Name", Name);
/*Retrieve the current person's displayname*/
rc=metadata_getattr(uri, "DisplayName", DisplayName);
rc=metadata_getattr(uri, "MetadataUpdated", MDUpdate);
/*Get the group association information for the current person*/
a=1;
grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);
/*If this person does not belong to any groups, set their group
variable to 'NONE'*/
if grpassn in (-3,-4) then
do;
grp="NONE";
output;
end;
/*If the person belongs to any groups, loop through the list
and retrieve the name of each group, outputting each on a
separate record. If the GroupType is a <blank>, then set the
grptype to GROUP. If the GroupType is a ROLE, then the
grptype is already set to ROLE. This will be used in the
PROC REPORT step.*/
else
do while (grpassn > 0);
rc2=metadata_getattr(groupuri, "Name", grp);
rc3=metadata_getattr(groupuri, "GroupType", grptype);
if grptype = '' then
do;
grptype="GROUP";
end;
output;
a+1;
grpassn=metadata_getnasn(uri,"IdentityGroups",a,groupuri);
end;
/*Retrieve the next person's information*/
n+1;
nobj=metadata_getnobj("omsobj:Person?@Id contains '.'",n,uri);
end;
keep name DisplayName MDUpdate grp grptype;
run;
options ls=200 ps=200;
/*Display the list of users and their groups*/
proc report data=users_grps_roles nowd headline headskip spanrows;
columns grptype grp name DisplayName groups roles MDUpdate;
define name / order 'User Name' format=$30.;
define DisplayName / order 'User DisplayName' format=$40.;
define grp / noprint;
define grptype / noprint;
define groups / computed 'Groups' format=$40.;
define roles / computed 'Roles' format=$40.;
compute groups / char length = 40;
if grptype = 'GROUP' then
groups = grp;
else if grp = 'NONE' then
groups = 'NONE';
else groups = ' ';
endcomp;
compute roles / char length = 40;
if grptype = 'ROLE' then
roles = grp;
else if grp = 'NONE' then
roles = 'NONE';
else roles = ' ';
endcomp;
define MDUpdate / display 'Last Updated' format=$20.;
break after name / skip;
title 'Listing of Users and associated Groups and Roles';
run;
Thank you.
-Albert
http://support.sas.com/documentation/cdl/en/bisecag/69827/PDF/default/bisecag.pdf
Search for %mduextr. Hope this helps.
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!
Get started using SAS Studio to write, run and debug your SAS programs.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.