101 lines
2.3 KiB
Perl
101 lines
2.3 KiB
Perl
# This sample demonstrates how to create/delete objects in DS
|
|
|
|
use OLE; # Include OLE and Win32 extensions
|
|
use Win32;
|
|
|
|
# Create the Global Providers object
|
|
$adsiNameSpaces = CreateObject OLE 'ADsNameSpaces'
|
|
or warn "Couldn't create new instance of the ADSI Name Spaces Check your registry for ADsNameSpaces key under classes!!";
|
|
|
|
$errNum = Win32::OLELastError;
|
|
if ($errNum != 0)
|
|
{
|
|
print "OLE Error0: ", Win32::FormatMessage($errNum);
|
|
exit(1);
|
|
}
|
|
else
|
|
{
|
|
print "Successfully created the NameSpaces object\n";
|
|
}
|
|
|
|
# Now get the LDAP Provider object
|
|
$ldapNameSpace = $adsiNameSpaces->getobject("", "LDAP:");
|
|
|
|
$errNum = Win32::OLELastError;
|
|
if ($errNum != 0)
|
|
{
|
|
print "OLE Error1: ", Win32::FormatMessage($errNum);
|
|
exit(1);
|
|
}
|
|
else
|
|
{
|
|
print "Successfully got the LDAP Provider object\n";
|
|
}
|
|
|
|
# Let us bind to a DS
|
|
$myDSObject = $ldapNameSpace->OpenDSObject("LDAP://myServer/DC=MyDomain,DC=Com", "cn=MyUser,cn=users,dc=MyDomain,dc=com", "UserPassword", 1);
|
|
$errNum = Win32::OLELastError;
|
|
if ($errNum != 0)
|
|
{
|
|
print "OLE Error2: ", Win32::FormatMessage($errNum);
|
|
exit(1);
|
|
}
|
|
else
|
|
{
|
|
print "Successfully bound to an object\n";
|
|
}
|
|
###################################
|
|
# Create an User object in the DS #
|
|
###################################
|
|
$newObj = $myDSObject->create("User", "cn=LdapTestUser");
|
|
|
|
$errNum = Win32::OLELastError;
|
|
if ($errNum != 0)
|
|
{
|
|
print "OLE Error3: ", Win32::FormatMessage($errNum);
|
|
exit(1);
|
|
}
|
|
else
|
|
{
|
|
print "Successfully called IADsContainer::Create to create an object\n";
|
|
}
|
|
|
|
# We have to set the mandatory property samAccountName
|
|
$newObj->put("samAccountName", "LdapTestUser");
|
|
|
|
$errNum = Win32::OLELastError;
|
|
if ($errNum != 0)
|
|
{
|
|
print "OLE Error4: ", Win32::FormatMessage($errNum);
|
|
}
|
|
else
|
|
{
|
|
print "Successfully set SamAccountName property on the created object\n";
|
|
}
|
|
|
|
# SetInfo on the object
|
|
$newObj->setinfo();
|
|
|
|
$errNum = Win32::OLELastError;
|
|
if ($errNum != 0)
|
|
{
|
|
print "OLE Error5: ", Win32::FormatMessage($errNum);
|
|
}
|
|
else
|
|
{
|
|
print "Successfully created the object in DS (SetInfo passes)\n";
|
|
}
|
|
|
|
# Now delete the User object
|
|
$myDSObject->delete("User", "cn=LdapTestUser");
|
|
|
|
$errNum = Win32::OLELastError;
|
|
if ($errNum != 0)
|
|
{
|
|
print "OLE Error6: ", Win32::FormatMessage($errNum);
|
|
}
|
|
else
|
|
{
|
|
print "Successfully deleted the object\n";
|
|
}
|