Thanks a lot Yash.

I was able to create both the AD and Exchange 2003 account from my Perl script 
using Net Ldap.

Are you saying that you think this won't work once I eventually go to Exchange 
2007?

Thanks

john



From: Vartak, Yash V [mailto:yash_var...@nol.com.sg]
Sent: Sunday, January 10, 2010 2:10 AM
To: Sheahan, John; 'perl-ldap@perl.org'
Subject: RE: Creating AD account and Exchange Account


John,



Sorry for replying this mail so late, I saw it just a day back.

I guess you have had trouble while creating a exchange 2007 mailbox with AD 
using perl



Below is a sample code, this would create a AD active user UAC 512



$ADS_UF_NORMAL_ACCOUNT=512



sub Make_User {

      my ($objConn, $emplid, $ntID, $cn, $dn, $displayName,

            $m_server, $s_grp, $g_name, $sn, $grp, $ou,

            $dn, $company, $type, $mail, $pwd, $success) = @_;

      my ($ADS_UF_NORMAL_ACCOUNT, $objParent, $objUser);

      print LOG "make_user starting Success = $success\n" if ($debug);

      use Win32::OLE;

      Win32::OLE->Option(Warn => 2);



      # Taken from $ADS_USER_FLAG_ENUM



      print "DN = $dn\n CN = $cn\n" if($debug);

      $ADS_UF_NORMAL_ACCOUNT = 512;

      # Create base user account

      $objParent = Win32::OLE->GetObject("LDAP://".$dn);

      $objUser   = $objParent->Create("user", $cn); # e.g. joes

      $objUser->Put('sAMAccountName' , $ntID);   # e.g. joes

      $objUser->Put('userPrincipalName' , $ntID. "\...@ad.xyz.com"); # e.g. 
j...@rallencorp.com

      if (($g_name) && ($g_name ne $sn)) {

         $objUser->Put('givenName', $g_name);   # e.g. Joe

      }

      $objUser->Put("sn", $sn);           # e.g. Smith

      $objUser->Put("displayName", $displayName); # e.g. Joe

      $objUser->SetInfo;

      if (Win32::OLE->LastError) {

         $success = 0;

      }

      # set the password, enable the account & set VPN access

      $objUser->SetPassword($pwd);

      $objUser->Put("userAccountControl", $ADS_UF_NORMAL_ACCOUNT);

      $objUser->Put("pwdLastSet", '0');

      $objUser->Put("company", $company);

      #set dial access

      if (($grp) and ($grp ne "512")) {

         $objUser->Put('msNPAllowDialin', "TRUE");

      }

      $objUser->SetInfo;

      if (Win32::OLE->LastError) {

         $success = 0;

      }

   } # end Make_User



Once you are done with creating a active user .. use external powershell to 
create a mail box, I know this is cumbersome but only reliable way to create a 
mail box on Exchange 2007.



enable_nt_mb.ps1  is a external power shell script to mail enable and existing 
nt id it take ntid , mailserver, storagegrp as command line paramenters



      my $yCmd="powershell -command \"& {d:\\enable_nt_mb.ps1 $ntID $m_server 
$s_grp}\"";

       my $opCmd=`$yCmd`;



Something on these lines.



Regards,

Yash Vartak





-----Original Message-----
From: Sheahan, John [mailto:john.shea...@priceline.com]
Sent: Wednesday, December 30, 2009 2:07 AM
To: 'perl-ldap@perl.org'
Subject: Creating AD account and Exchange Account



Has anyone been able to create the AD and Exchange Account from a perl script?



john

Reply via email to