# From the book "Active Directory, Third Edition"
# ISBN: 0-596-10173-2
use Win32::OLE qw(in);
use constant vbNull => 1;
use constant ADS_PROPERTY_CLEAR => 1;
use constant ADS_PROPERTY_UPDATE => 2;
use constant ADS_PROPERTY_APPEND => 3;
use constant ADS_PROPERTY_DELETE => 4;
my $objUser;
# An ADSI User object
my $strPager;
# A text string holding a phone number
$objUser = Win32::OLE->GetObject('LDAP://cn=Administrator,cn=Users,dc=mycorp,dc=com');
# **********************************************************************
# Set three pager numbers for the Administrator account
# **********************************************************************
$objUser->PutEx(ADS_PROPERTY_UPDATE, 'pager', ['123-1234', '234-2345', '345-3456']);
$objUser->SetInfo();
$objUser->GetInfo();
foreach my $strPager (in $objUser->telephonePager) {
print "$strPager\n";
}
# **********************************************************************
# Delete the first and last number
# **********************************************************************
$objUser->PutEx(ADS_PROPERTY_DELETE, 'pager', ['123-1234', '345-3456']);
$objUser->SetInfo();
$objUser->GetInfo();
foreach my $strPager (in $objUser->telephonePager) {
print "$strPager\n";
}
# **********************************************************************
# Add a new pager number without deleting the remaining number
# **********************************************************************
$objUser->PutEx(ADS_PROPERTY_APPEND, 'pager', ['456-4567']);
$objUser->SetInfo();
$objUser->GetInfo();
foreach my $strPager (in $objUser->telephonePager) {
print "$strPager\n";
}
# **********************************************************************
# Delete all values
# **********************************************************************
$objUser->PutEx(ADS_PROPERTY_CLEAR, 'pager', vbNull);
$objUser->SetInfo();
$objUser->GetInfo();
foreach my $strPager (in $objUser->telephonePager) {
print "$strPager\n";
}
|