VB.net使用UserPrincipalEx创建新的AD用户帐户?

时间:2013-02-21 20:53:46

标签: vb.net active-directory directoryservices

我正忙着尝试添加部门和职位等字段。

我正在使用它来创建用户帐户:

Dim ctx As New PrincipalContext(ContextType.Domain, "domain.name.pvt",  "OU=Users,DC=global,DC=pvt")

Dim usr As UserPrincipal = New UserPrincipal(ctx) 

我创建帐户没有问题,但无法添加DepartmentTitle这样的简单内容。我读过有关使用扩展但在C ++中使用扩展但并不知道如何做到这一点。

任何帮助都会很棒!!!谢谢!

1 个答案:

答案 0 :(得分:1)

如果您使用的是.NET 3.5及更高版本,则应查看System.DirectoryServices.AccountManagement(S.DS.AM)命名空间。在这里阅读所有相关内容:

要扩展UserPrincipal类,你不需要太多 - 这样的东西就足够了(我最初用C#编写了这个并且只是将它转换为'net.net上的VB.NET - 我希望VB.NET代码没有问题!

Imports System.DirectoryServices.AccountManagement

Namespace ADExtended
    <DirectoryRdnPrefix("CN")> _
    <DirectoryObjectClass("Person")> _
    Public Class UserPrincipalEx
        Inherits UserPrincipal
        ' Inplement the constructor using the base class constructor. 
        Public Sub New(context As PrincipalContext)
            MyBase.New(context)
        End Sub

        ' Implement the constructor with initialization parameters.    
        Public Sub New(context As PrincipalContext, samAccountName As String, password As String, enabled As Boolean)
            MyBase.New(context, samAccountName, password, enabled)
        End Sub

        ' Create the "Department" property.    
        <DirectoryProperty("department")> _
        Public Property Department() As String
            Get
                If ExtensionGet("department").Length <> 1 Then
                    Return String.Empty
                End If

                Return DirectCast(ExtensionGet("department")(0), String)
            End Get
            Set
                ExtensionSet("department", value)
            End Set
        End Property

        ' Create the "Title" property.    
        <DirectoryProperty("title")> _
        Public Property Title() As String
            Get
                If ExtensionGet("title").Length <> 1 Then
                    Return String.Empty
                End If

                Return DirectCast(ExtensionGet("title")(0), String)
            End Get
            Set
                ExtensionSet("title", value)
            End Set
        End Property

        ' Implement the overloaded search method FindByIdentity.
        Public Shared Shadows Function FindByIdentity(context As PrincipalContext, identityValue As String) As UserPrincipalEx
            Return DirectCast(FindByIdentityWithType(context, GetType(UserPrincipalEx), identityValue), UserPrincipalEx)
        End Function

        ' Implement the overloaded search method FindByIdentity. 
        Public Shared Shadows Function FindByIdentity(context As PrincipalContext, identityType As IdentityType, identityValue As String) As UserPrincipalEx
            Return DirectCast(FindByIdentityWithType(context, GetType(UserPrincipalEx), identityType, identityValue), UserPrincipalEx)
        End Function
    End Class
End Namespace

现在,您只需使用UserPrincipalEx类:

Dim ctx As New PrincipalContext(ContextType.Domain, "domain.name.pvt",  "OU=Users,DC=global,DC=pvt")

Dim usr As UserPrincipalEx = New UserPrincipalEx(ctx) 
usr.Title = "......."
usr.Department = "......."

新的S.DS.AM让您可以轻松地与AD中的用户和群组一起玩!