PutEx would work, in theory, but the calls are missing a parameter. PutEx takes three parameters, not two. The first should be a control code whose values are specified in ADS_PROPERTY_OPERATION_ENUM. In this case you would use ADS_PROPERTY_UPDATE or "2".
Put is probably a better choice in this case since it's a single-valued attribute and a simple Put will do the same thing as the PutEx(ADS_PROPERTY_UPDATE...) -----Original Message----- From: Steven Manross [mailto:[EMAIL PROTECTED]] Posted At: Friday, February 14, 2003 5:03 PM Posted To: perl-win32-admin Conversation: Adding Users to AD with OLE Subject: RE: Adding Users to AD with OLE It looks like your 'PutEx'es Should change to 'Put's http://aspn.activestate.com/ASPN/Mail/Message/1304804 <snip from URL> # If you don't Put 512 into userAccountControl, the new account will be disabled $NewUser->Put("userAccountControl",512); #keep ->Putting attribute values as needed... # $NewUser->SetInfo; #Commit change </snip from URL> Steven -----Original Message----- From: henry isham [mailto:[EMAIL PROTECTED]] Sent: Friday, February 14, 2003 3:36 PM To: Steven Manross; [EMAIL PROTECTED]; [EMAIL PROTECTED]; [EMAIL PROTECTED] Subject: RE: Adding Users to AD with OLE Steven/Roger, Thanks for the advice. It looks like the $NewUser->PutEx("userAccountControl",512); line was the culprit. It was causing the error. I followed your advice and added a print "result ".Win32::OLE->LastError()."\n"; line to capture the output of each step, and it turned out to be that line. I read somewhere that line was needed so that the ID's don't get created in a "disabled" state, which is how it's working now. Is 512 the right value? Or should use another? Again, thanks for your advice. -Henry -----Original Message----- From: Steven Manross [mailto:[EMAIL PROTECTED]] Sent: Fri 2/14/2003 4:26 PM To: henry isham; [EMAIL PROTECTED]; [EMAIL PROTECTED] Cc: Subject: RE: Adding Users to AD with OLE The best way to start troubleshooting this is to put a SetInfo after each PutEx and an error check of.. If (Win32::OLE->LastError != 0) { print "objuser (or whatever): ".Win32::OLE->LastError(); } After each SetInfo. As well, I think a simple Put (instead of PutEx) will work. Steven -----Original Message----- From: henry isham [mailto:[EMAIL PROTECTED]] Sent: Friday, February 14, 2003 2:12 PM To: [EMAIL PROTECTED]; [EMAIL PROTECTED] Subject: Adding Users to AD with OLE All, I'm trying to execute the script below but it's returning this error: Win32::OLE operating in debugging mode: _Unique => 1 Win32::OLE(0.1502) error 0x8007202f: "A constraint violation occurred" in METHOD/PROPERTYGET "SetInfo" The really bizzare thing here is that this script's VBSCRIPT equivalent works fine. So, I'm totally stumped! Begin Script ------------ use Win32::OLE; my $Name = "Henry Isham"; my $ID = "hisham"; my $Container = Win32::OLE->GetObject("LDAP://ou=sitename,dc=corp,dc=net"); my $NewUser = $Container->Create("user","cn=" .$Name); $NewUser->PutEx("SamAccountName",$ID); $NewUser->PutEx("objectClass","user"); $NewUser->PutEx("scriptPath","sitename.vbs"); $NewUser->PutEx("userAccountControl",512); $NewUser->SetInfo; print Win32::OLE->LastError(); _______________________________________________ Perl-Win32-Admin mailing list [EMAIL PROTECTED] To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs _______________________________________________ Perl-Win32-Admin mailing list [EMAIL PROTECTED] To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
