|
|
|
我现在想通过程序在Exchange Server中创建用户邮箱,在MSDN中找到了一段代码,但一直都不可用,不知道这里的兄弟又没有人用过,帮我一把!<br>
VB代码如下:<br>
<br>
引用类库:Active DS Type Library, Microsoft CDO for Exchange Management Library, Microsoft Cluster Service Automation Classes, Microsoft CDO for Windows 2000 Library.<br>
<br>
Form中:<br>
Private Sub Command1_Click()<br>Dim szServerName As String<br>Dim szDomainName As String<br>Dim szExchangeOrg As String<br>Dim szAdminGroup As String<br>Dim szStorageGroup As String<br>Dim szstoreName As String<br>Dim szAlias As String<br>Dim szFirstName As String<br>Dim szLastName As String<br>Dim szPassword As String<br>Dim szHostingOrgName As String<br>Dim szHostingOrgDomain As String<br>Dim szOrganizationalUnit As String<br>Dim szGroupName As String<br>Dim szDirectoryServer As String<br>Dim szAdminUserName As String<br>Dim szAdminPassword As String<br>
' Input: szServerName: Name of Exchange server<br>
' szdomainName: Domain of user<br>
' szExchangeOrg: Name of Exchange organization<br>
' szAdminGroup: Name of Exchange admin group<br>
' szStorageGroup: Name of Exchange storage group<br>
' szstoreName: Name of the store the mailbox is to be created in<br>
' szAlias: Alias of user<br>
' szFirstName: First name of user<br>
' szLastName: Last name of user<br>
' szPassword: User's password<br>
' szHostingOrgName: Name of hosting container in the DS<br>
' szHostingOrgDomain: SMTP suffix of user's org<br>
' szOrganizationalUnit: Name of users org<br>
' szGroupName: Name of group to add user to<br>
' szDirectoryServer: Name of the Directory Server<br>
' szAdminUserName: Administrator user name<br>
' szAdminPassword: Administrator password<br>
<br>szServerName = "exchange"<br>szDomainName = "exchange.com"<br><br>szExchangeOrg = "First Organization"<br><br>szAdminGroup = "administrators"<br>szStorageGroup = "First Storage Group"<br><br>szstoreName = "Mailbox Store(EXCHANGE)"<br><br>szAlias = ""<br>szFirstName = "user"<br>szLastName = "li"<br>szPassword = "user"<br><br>szHostingOrgName = "exchange"<br>szHostingOrgDomain = "exchange.com"<br><br>szOrganizationalUnit = ""<br><br>szGroupName = ""<br>szDirectoryServer = "exchange"<br><br>szAdminUserName = ""<br>szAdminPassword = ""<br><br>Call createUserThroughCDO(szServerName, _<br>szDomainName, _<br>szExchangeOrg, _<br>szAdminGroup, _<br>szStorageGroup, _<br>szstoreName, _<br>szAlias, _<br>szFirstName, _<br>szLastName, _<br>szPassword, _<br>szHostingOrgName, _<br>szHostingOrgDomain, _<br>szOrganizationalUnit, _<br>szGroupName, _<br>szDirectoryServer, _<br>szAdminUserName, _<br>szAdminPassword)<br>
<br>
End Sub<br>
<br>
module 中的代码:<br>
'//////////////////////////////////////////////////////////////////////<br>
' Function: createUserThroughCDO()<br>
' Purpose: Creates a user in the specified organization, assigns an offline address book,<br>
' sets their Outlook Web Access search criteria, and creates a mailbox.<br>
'<br>
' Input: szServerName: Name of Exchange server<br>
' szdomainName: Domain of user<br>
' szExchangeOrg: Name of Exchange organization<br>
' szAdminGroup: Name of Exchange admin group<br>
' szStorageGroup: Name of Exchange storage group<br>
' szstoreName: Name of the store the mailbox is to be created in<br>
' szAlias: Alias of user<br>
' szFirstName: First name of user<br>
' szLastName: Last name of user<br>
' szPassword: User's password<br>
' szHostingOrgName: Name of hosting container in the DS<br>
' szHostingOrgDomain: SMTP suffix of user's org<br>
' szOrganizationalUnit: Name of users org<br>
' szGroupName: Name of group to add user to<br>
' szDirectoryServer: Name of the Directory Server<br>
' szAdminUserName: Administrator user name<br>
' szAdminPassword: Administrator password<br>
'<br>
' Output: createUserThroughCDO: Contains Error code (if any)<br>
'<br>
' Note: In order for this example to function correctly, it may be necessary to include<br>
' references to the following libraries: Active DS Type Library, Microsoft CDO for<br>
' Exchange Management Library, Microsoft Cluster Service Automation Classes,<br>
' Microsoft CDO for Windows 2000 Library.<br>
'//////////////////////////////////////////////////////////////////////<br>
Public Function createUserThroughCDO(ByVal szServerName As String, _<br>ByVal szDomainName As String, _<br>ByVal szExchangeOrg As String, _<br>ByVal szAdminGroup As String, _<br>ByVal szStorageGroup As String, _<br>ByVal szstoreName As String, _<br>ByVal szAlias As String, _<br>ByVal szFirstName As String, _<br>ByVal szLastName As String, _<br>ByVal szPassword As String, _<br>ByVal szHostingOrgName As String, _<br>ByVal szHostingOrgDomain As String, _<br>ByVal szOrganizationalUnit As String, _<br>ByVal szGroupName As String, _<br>ByVal szDirectoryServer, _<br>ByVal szAdminUserName, _<br>ByVal szAdminPassword) As Integer<br>
<br>Dim objPerson As CDO.Person<br>Dim objMailbox As cdoexm.IMailboxStore<br>Dim szConnString As String<br>Dim szOABlocation As String<br>Dim szLdapDomain As String<br>Dim szaDomTokens() As String<br>Dim szDomainDN As String<br>
<br>On Error GoTo errhandler<br>
<br>' Puts the domain specified into an ldap domain string.<br>szaDomTokens = Split(szDomainName, ".", -1, 1)<br>szDomainDN = Join(szaDomTokens, ",dc=")<br>szDomainDN = "dc=" & szDomainDN<br>szLdapDomain = szDomainDN<br>
<br>' Build the necessary LDAP path to create the user.<br>szConnString = "LDAP://" + szDirectoryServer + "/" + _<br>"cn=" + szAlias + ",OU=" + szOrganizationalUnit + _<br>",OU=" + szHostingOrgName + "," + szLdapDomain<br>
<br>' Build the necessary LDAP path to this users's OAB's.<br>
<br>szOABlocation = "cn=" + szOrganizationalUnit + _<br>",cn=Offline Address Lists,cn=Address Lists Container,cn=" + _<br>szExchangeOrg + ",cn=Microsoft Exchange,cn=Services,cn=Configuration," + szLdapDomain<br>
<br>' First, create the user in Active Directory.<br>
<br>Set objPerson = CreateObject("CDO.Person")<br>With objPerson<br>.FirstName = szFirstName<br>.LastName = szLastName<br>.Fields("sAMAccountName") = szAlias + "@" + szHostingOrgDomain<br>.Fields("userPrincipalName") = szAlias + "@" + szHostingOrgDomain<br>.Fields("userAccountControl") = 66048 ' set password doesn't expire<br>.Fields("userPassword") = szPassword<br>.Fields("msexchQueryBaseDN") = "OU=" + szOrganizationalUnit + "," + "OU=" + szHostingOrgName + "," + szLdapDomain<br>.Fields("mailNickname") = szAlias<br>.Fields("msExchUseOAB") = szOABlocation<br>.Fields.Update<br>MsgBox .DataSource.SourceURL<br>.DataSource.SaveTo szConnString, , , , , szAdminUserName, szAdminPassword<br>End With<br>
<br>' Create the mailbox in the specified location.<br>
<br>Set objMailbox = objPerson.GetInterface("IMailboxStore")<br>objMailbox.CreateMailbox "LDAP://" + szDirectoryServer + _<br>"/CN=" + szstoreName + ",CN=" + szStorageGroup + _<br>",CN=InformationStore,CN=" + szServerName + _<br>",CN=Servers,CN=" + szAdminGroup + _<br>",CN=Administrative Groups,CN=" + szExchangeOrg + _<br>",CN=Microsoft Exchange,CN=Services,CN=Configuration," + _<br>szLdapDomain<br>With objPerson<br>.Email = szAlias + "@" + szHostingOrgDomain<br>.DataSource.Save<br>End With<br>
<br>' See if a group name was passed in. If so, add this user to that group.<br>
<br>If szGroupName <> "" Then<br>addUserToGroup szDomainName, _<br>szAlias, _<br>szGroupName, _<br>szHostingOrgName, _<br>szOrganizationalUnit, _<br>szHostingOrgDomain, _<br>True, _<br>szAdminUserName, _<br>szAdminPassword, _<br>szDirectoryServer<br>End If<br>
<br>createUserThroughCDO = 0<br>
<br>' Clean up.<br>Set objPerson = Nothing<br>Set objMailbox = Nothing<br>Exit Function<br>
<br>' Error handling.<br>
errhandler:<br>
<br>createUserThroughCDO = 1<br>' Implement error logging here.<br>MsgBox Err.Description & " " & Err.Number<br><br>Set objPerson = Nothing<br>Set objMailbox = Nothing<br>
<br>
End Function<br>
<br>
'//////////////////////////////////////////////////////////////////////<br>
' Function: addUserToGroup()<br>
' Purpose: Adds the specified user (or group) to the specified group.<br>
'<br>
' Input: szDomainName: Domain of the Exchange org<br>
' szUserAlias: Alias of user (or group) to add<br>
' szGroupAlias: Name of Exchange organization<br>
' szHostingOrgName: Name of hosting container<br>
' szOrganizationalUnit: Name of hosting organization<br>
' szSMTPAddress: SMTP address of user & group<br>
' boolUser: User or group? T/F<br>
' szUserName: Admin username<br>
' szUserPwd: Admin pwd<br>
' szDirectoryServer: Name of the Directory Server<br>
'<br>
' Output: addUserToGroup: Contains Error code (if any)<br>
'<br>
' Note: In order for this example to function correctly, it may be necessary to include<br>
' references to the following libraries: Active DS Type Library, Microsoft CDO for<br>
' Exchange Management Library, Microsoft Cluster Service Automation Classes,<br>
' Microsoft CDO for Windows 2000 Library.<br>
'//////////////////////////////////////////////////////////////////////<br>
Public Function addUserToGroup(ByVal szDomainName As String, _<br>ByVal szUserAlias As String, _<br>ByVal szGroupAlias As String, _<br>ByVal szHostingOrgName As String, _<br>ByVal szOrganizationalUnit As String, _<br>ByVal szSMTPAddress As String, _<br>ByVal boolUser As Boolean, _<br>ByVal szUserName As String, _<br>ByVal szUserPwd As String, _<br>ByVal szDirectoryServer) As Integer<br>
<br>Dim szLdapDomain As String<br>Dim szConnStringGroup As String<br>Dim szConnStringUser As String<br>Dim objGrp As IADs<br>Dim objUsr As IADs<br>Dim objLdap As IADsOpenDSObject<br>Dim szaDomTokens() As String<br>Dim szDomainDN As String<br>
<br>On Error GoTo errhandler<br>
<br>' Puts the domain specified into an ldap domain string.<br>szaDomTokens = Split(szDomainName, ".", -1, 1)<br>szDomainDN = Join(szaDomTokens, ",dc=")<br>szDomainDN = "dc=" & szDomainDN<br>szLdapDomain = szDomainDN<br>
<br>' Create the ldap path for the group.<br>szConnStringGroup = "LDAP://" + szDirectoryServer + _<br>"/cn=" + szGroupAlias + "@" + szSMTPAddress + _<br>",OU=" + szOrganizationalUnit + ",OU=" + _<br>szHostingOrgName + "," + szLdapDomain<br>
<br>' Create the ldap path for the object to ADD to the group.<br>If boolUser Then<br>szConnStringUser = "LDAP://" + szDirectoryServer + _<br>"/cn=" + szUserAlias + ",OU=" + szOrganizationalUnit + _<br>",OU=" + szHostingOrgName + "," + szLdapDomain<br>Else<br>szConnStringUser = "LDAP://" + szDirectoryServer + _<br>"/cn=" + szUserAlias + "@" + szSMTPAddress + _<br>",OU=" + szOrganizationalUnit + ",OU=" + _<br>szHostingOrgName + "," + szLdapDomain<br>End If<br>
<br>' Get handles to the objects.<br>
<br>Set objLdap = GetObject("LDAP:")<br>
<br>Set objGrp = objLdap.OpenDSObject(szConnStringGroup, _<br>szUserName, _<br>szUserPwd, _<br>ADS_SECURE_AUTHENTICATION)<br>
<br>Set objUsr = objLdap.OpenDSObject(szConnStringUser, _<br>szUserName, _<br>szUserPwd, _<br>ADS_SECURE_AUTHENTICATION)<br>
<br>' Join the user/group to the group.<br>
<br>With objGrp<br>.Add objUsr.ADsPath<br>.SetInfo<br>End With<br>
<br>addUserToGroup = 0<br>
<br>' Clean up.<br>Set objGrp = Nothing<br>Set objUsr = Nothing<br>Set objLdap = Nothing<br>Exit Function<br>
<br>' Error handling.<br>
errhandler:<br>
<br>addUserToGroup = 1<br>' Implement error handling here.<br>Set objGrp = Nothing<br>Set objUsr = Nothing<br>Set objLdap = Nothing<br>
<br>
End Function<br>
<br>
<br>
|
|