C#Active Directory组查询

时间:2011-11-30 17:44:23

标签: c# active-directory

我正在尝试找到代码here

我收到以下编译时错误:

当前上下文中不存在名称“p”

这是我的代码......有人可以帮忙吗?谢谢。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.DirectoryServices;
using System.DirectoryServices.AccountManagement;

 public static List<string> GetGroups()
 {
     using (PrincipalContext ctx = new PrincipalContext(ContextType.Domain))
     {
         using (p = Principal.FindByIdentity(ctx, "yourUserName")) 
         {
            var groups = p.GetGroups();
            using (groups)
            {
                foreach (Principal group in groups)
                {
                    Console.WriteLine(group.SamAccountName + "-" + group.DisplayName); 
                } 
            }
        }
     } 
 }

3 个答案:

答案 0 :(得分:3)

您永远不会声明p。您需要将代码更改为:

// Add a "var" below
using (var p = Principal.FindByIdentity(ctx, "yourUserName")) 

答案 1 :(得分:1)

您需要为变量p定义类型:

using (PrincipalContext ctx = new PrincipalContext(ContextType.Domain))
using (Principal p = Principal.FindByIdentity(ctx, "yourUserName")) 
{
    var groups = p.GetGroups();

    foreach (Principal group in groups)
    {
        Console.WriteLine(group.SamAccountName + "-" + group.DisplayName); 
    } 
}

PS:对不起,您使用的代码是我在回答另一个问题时创建的 - 我在那里遇到了这个错误。对不起 - 现在已经修好了。谢谢你指出来了!

答案 2 :(得分:1)

您永远不会声明p

试试这个:

using (var p = Principal.FindByIdentity(ctx, "yourUserName"))