当我使用下面的代码获取组列表时 我得到一个代表组名的长字符串
CN = group.xy.admin.si,OU =其他,OU =组,OU = 03,OU = UWP客户,DC = WIN,DC = CORP,DC = com
但我只是想获得组名称,在这种情况下 group.xy.admin.si
public static List<string> GetGroups(DirectoryEntry de)
{
var memberGroups = de.Properties["memberOf"].Value;
var groups = new List<string>();
if (memberGroups != null)
{
if (memberGroups is string)
{
groups.Add((String)memberGroups);
}
else if (memberGroups.GetType().IsArray)
{
var memberGroupsEnumerable = memberGroups as IEnumerable;
if (memberGroupsEnumerable != null)
{
foreach (var groupname in memberGroupsEnumerable)
{
groups.Add(groupname.ToString());
}
}
}
}
return groups;
}
答案 0 :(得分:2)
这里有两个选项:
正则表达式的伪代码:
string Pattern = @"^CN=(.*?)(?<!\\),.*";
string group = Regex.Replace(groupname.ToString(), Pattern, "$1");
groups.Add(group);
名称可以包含由“\”转义的“,”,因此即使您有名为“Foo,Bar”的组,此正则表达式也可以正常工作