3

我正在创建一个用于管理 Active Directory 的 Web 应用程序。我想在某个容器中创建一个组。

var groups = new List<Models.Group>();

PrincipalContext ctx = 
 new PrincipalContext(ContextType.Domain, domain, container, userName, password);

GroupPrincipal oGroupPrincipal = new GroupPrincipal(ctx);
oGroupPrincipal.Description = mGroup.GroupName;
oGroupPrincipal.GroupScope = mGroup.GroupScope;
oGroupPrincipal.IsSecurityGroup = mGroup.IsSecurity;
oGroupPrincipal.Save();

但我收到以下错误:

无法将类型“字符串”隐式转换为 System.DirectoryServices.AccountManagement.GroupScope?

我不确定如何处理。我应该如何将 GroupScope 转换为对象 GroupScope 而它是我列表中的对象字符串?

我也收到了这个错误:

SamAccountName 或 Name 必须在保存之前分配给此存储中新创建的 Principal 对象 >。

4

2 回答 2

2

组范围是一个具有本地、全局和通用值的枚举,看起来你还没有转换传入的值。

尝试将其设置为静态值:

oGroupPrincipal.GroupScope = System.DirectoryServices.AccountManagement.GroupScope.Local;

如果这清除了错误,请尝试解析您的传入字符串:

oGroupPrincipal.GroupScope = (System.DirectoryServices.AccountManagement.GroupScope)Enum.Parse(typeof(System.DirectoryServices.AccountManagement.GroupScope),value);
于 2013-06-21T08:00:45.970 回答
1

尝试

GroupPrincipal oGroupPrincipal = new GroupPrincipal(ctx, samAccountName);

oGroupPrincipal.Save(ctx);

Active Directory 的代码示例 -

http://www.codeproject.com/Articles/18102/Howto-Almost-Everything-In-Active-Directory-via-C#
使用 C# 的 Active Directory

于 2013-06-21T07:47:45.717 回答