IADsPropertyValue2

The IADsPropertyValue2 interface represents a value of a property entry.

The IADsPropertyEntry::Values property contains an array of IADsPropertyValue2 objects. For more information and a code sample on creating new property entries and values, see IADsPropertyList::PutPropertyItem.

Before calling the methods of this interface, explicitly call IADs::GetInfo or IADs::GetInfoEx to load the assigned values of the object into the cache, if the cache was not initialized. After modifying the properties of this interface, call IADs::SetInfo to save the changes to the directory.

This interface is more versatile than IADsPropertyValue because it can be used to obtain any data type.

Inheritance: IDispatch

Methods

Details

GetObjectProperty()

Retrieves the value of a property.

object GetObjectProperty(ADSTYPEENUM type)

Parameters

  • type – an ADSTYPEENUM value that specifies the data format that the value should be returned in.

Remarks

If the data type is not known, set this to ADSTYPE_UNKNOWN. In this case, this method will obtain the attribute value in the default data type and set this variable to the corresponding value. If any other value is specified, Adaxes will return the attribute value only if the data type matches the format of the value.

Examples

PowerShell
[Reflection.Assembly]::LoadWithPartialName("Softerra.Adaxes.Adsi")

# Connect to the Adaxes service.
$ns = New-Object "Softerra.Adaxes.Adsi.AdmNamespace"
$service = $ns.GetServiceDirectly("localhost")

# Bind to object.
$domainPath = "Adaxes://DC=domain,DC=com"
$domain = $service.OpenObject($domainPath, $null, $null, 0)
$domain.GetInfo()

$propertyEntry = $domain.GetPropertyItem("description", "ADSTYPE_CASE_IGNORE_STRING")

foreach ($propertyValue in $propertyEntry.Values)
{
    $description = $propertyValue.GetObjectProperty([ref]"ADSTYPE_CASE_IGNORE_STRING")
    Write-Host "Description: $description"
}
C#
using System;
using Softerra.Adaxes.Adsi;
using Softerra.Adaxes.Interop.Adsi;
using Softerra.Adaxes.Interop.Adsi.Cache;
using Softerra.Adaxes.Interop.Adsi.PersistentObjects;

class Program
{
    static void Main(string[] args)
    {
        // Connect to the Adaxes service.
        AdmNamespace ns = new AdmNamespace();
        IAdmService service = ns.GetServiceDirectly("localhost");

        // Bind to object.
        const string domainPath = "Adaxes://DC=domain,DC=com";
        IADs domain = (IADs)service.OpenObject(domainPath, null, null, 0);
        domain.GetInfo();

        IADsPropertyList propertyList = (IADsPropertyList)domain;

        IADsPropertyEntry propertyEntry =
            (IADsPropertyEntry)propertyList.GetPropertyItem("description",
            ADSTYPEENUM.ADSTYPE_CASE_IGNORE_STRING);

        foreach (IADsPropertyValue2 propertyValue in (Array)propertyEntry.Values)
        {
            string description = (string)propertyValue.GetObjectProperty(
                ADSTYPEENUM.ADSTYPE_CASE_IGNORE_STRING);
            Console.WriteLine("Description: {0}", description);
        }
    }
}

PutObjectProperty()

Sets the value of a property.

void PutObjectProperty(ADSTYPEENUM type, object value)

Parameters

  • type – an ADSTYPEENUM value that specifies the data format of the value to be set.
  • value – the new property value.

Examples

PowerShell
[Reflection.Assembly]::LoadWithPartialName("Softerra.Adaxes.Adsi")

# Connect to the Adaxes service.
$ns = New-Object "Softerra.Adaxes.Adsi.AdmNamespace"
$service = $ns.GetServiceDirectly("localhost")

# Bind to object.
$userPath = "Adaxes://CN=John Smith,CN=Users,DC=domain,DC=com"
$user = $service.OpenObject($userPath, $null, $null, 0)
$user.GetInfo()

# Create a property value.
$propertyValue = New-Object "Softerra.Adaxes.Adsi.AdsPropertyValue"
$propertyValue.PutObjectProperty("ADSTYPE_CASE_IGNORE_STRING", "My Description")

# Create a property entry.
$propertyEntry = New-Object "Softerra.Adaxes.Adsi.AdsPropertyEntry"
$propertyEntry.Name = "description"
$propertyEntry.Values =
    @([Softerra.Adaxes.Interop.Adsi.Cache.IADsPropertyValue]$propertyValue)
$propertyEntry.ControlCode = "ADS_PROPERTY_UPDATE"
$propertyEntry.ADsType = "ADSTYPE_CASE_IGNORE_STRING"

# Add the property entry to the property list.
$user.PutPropertyItem($propertyEntry)

# Commit changes to the directory.
$user.SetInfo()
C#
using System;
using Softerra.Adaxes.Adsi;
using Softerra.Adaxes.Interop.Adsi;
using Softerra.Adaxes.Interop.Adsi.Cache;
using Softerra.Adaxes.Interop.Adsi.PersistentObjects;

class Program
{
    static void Main(string[] args)
    {
        // Connect to the Adaxes service.
        AdmNamespace ns = new AdmNamespace();
        IAdmService service = ns.GetServiceDirectly("localhost");

        // Bind to object.
        const string userPath = "Adaxes://CN=John Smith,CN=Users,DC=domain,DC=com";
        IADs user = (IADs)service.OpenObject(userPath, null, null, 0);
        user.GetInfo();

        IADsPropertyList propertyList = (IADsPropertyList)user;

        // Create a property value.
        IADsPropertyValue2 propertyValue = new AdsPropertyValue();
        propertyValue.PutObjectProperty(
            ADSTYPEENUM.ADSTYPE_CASE_IGNORE_STRING, "My Description");

        // Create a property entry.
        IADsPropertyEntry propertyEntry = new AdsPropertyEntry();
        propertyEntry.Name = "description";
        object[] values = { propertyValue };
        propertyEntry.Values = values;
        propertyEntry.ControlCode = ADS_PROPERTY_OPERATION_ENUM.ADS_PROPERTY_UPDATE;
        propertyEntry.ADsType = ADSTYPEENUM.ADSTYPE_CASE_IGNORE_STRING;

        // Add the property entry to the property list.
        propertyList.PutPropertyItem(propertyEntry);

        // Commit changes to the directory.
        user = (IADs)propertyList;
        user.SetInfo();

    }
}

Requirements

Minimum required version: 2009.1

See also