查看Active Directory中的组,并与所有用户一起侦听所有组,直到级别3
本文关键字:一起 用户 Directory Active 查看 | 更新日期: 2023-09-27 18:28:13
我的C#代码有问题,我想在一个特定的组(称为L_P001xxx)下显示所有组。
我最终想要的是,从组L_P001xxx开始,我想显示所有组,直到级别3,在级别3中,我只想显示用户。
我想我必须用递归来解决这个问题,但它并没有按预期工作。
现在我得到的是:
这个群的第一个成员叫A96XYZ,然后是这个群的首位用户,但在那之后它被卡住了,我不知道为什么。
这是我的错误信息:
{"Unknown name. (Exception from HRESULT: 0x80020006 (DISP_E_UNKNOWNNAME))"}
这是我的代码:
namespace ADQuery
{
class Program
{
static void Main(string[] args)
{
DirectoryEntry root = new DirectoryEntry(String.Format("WinNT://{0},Computer", "10.18.6.9"), null, null, AuthenticationTypes.Secure);
DirectoryEntry admGroup = root.Children.Find("L_P00142W", "group");
DoForEveryNode(admGroup);
}
static void DoForEveryNode(DirectoryEntry de)
{
object members = de.Invoke("members", null);
foreach (object groupMember in (IEnumerable)members)
{
DirectoryEntry member = new DirectoryEntry(groupMember);
Console.WriteLine(member.Name);
DoForEveryNode(member);
}
}
}
}
我做了更多的工作,现在可以读取每个组的用户,但仍然有一个小问题。
我有这个组L_P00142W
,这个组有一个名为L_ext_P00142W
的域本地组,我无法访问这个组。
对我来说,所有其他小组都不再是阅读的问题,但这个小组总是被忽视。也许有人知道我能做什么或应该做什么?这是我的代码:
namespace ADQuery
{
class Program
{
static void Main(string[] args)
{
//GetUserLocalGroups("L_P00142", "10.18.6.9", "s-gruppe");
DirectoryEntry root = new DirectoryEntry(String.Format("WinNT://{0},Computer", "ip-address"), null, null, AuthenticationTypes.Secure);
DirectoryEntry admGroup = root.Children.Find("L_P00142W", "group");
DoForEveryNode(admGroup);
}
static void DoForEveryNode(DirectoryEntry de)
{
if (de.SchemaClassName == "Group")
{
object members = de.Invoke("members", null);
foreach (object groupMember in (IEnumerable)members)
{
DirectoryEntry member = new DirectoryEntry(groupMember);
if (member.SchemaClassName == "User")
Console.WriteLine("I am a user: " + member.Name);
else
{
Console.WriteLine("I am a group: " + member.Name);
DoForEveryNode(member);
}
}
Console.ReadLine();
}
}
}
}