IAdmPropertyPatternContainer

The IAdmPropertyPatternContainer interface represents the container where property patterns are stored.

Inheritance: IAdmTop

Methods

Details

GetEffectivePropertyPatterns()

Returns an array of GUIDs of the property patterns effective for the given object.

Byte[][] GetEffectivePropertyPatterns(IAdmTop targetObject)

Parameters

  • targetObject – the directory object to get effective property patterns for.

Return value

Each GUID is represented as an array of 16 bytes (Byte[]), and the method returns an array of byte arrays (Byte[][]).

You can bind to the property patterns using their GUIDs. For more information on how to bind to directory objects, see Binding to ADSI objects.

Examples

The following code sample outputs names and descriptions of property patterns effective for a user.

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 the 'Property Patterns' container.
$propertyPatternsPath = $service.Backend.GetConfigurationContainerPath("PropertyPatterns")
$propertyPatternsContainer = $service.OpenObject($propertyPatternsPath, $null, $null, 0)

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

# Get effective property patterns.
$propertyPatternsGuidsBytes = $propertyPatternsContainer.GetEffectivePropertyPatterns($user)

Write-Host "Property patterns effective for the user:"
foreach ($guidBytes in $propertyPatternsGuidsBytes)
{
    # Bind to the property pattern.
    $guid = [Guid]$guidBytes
    $patternPath = "Adaxes://<GUID=$guid>"
    $pattern = $service.OpenObject($patternPath, $null, $null, 0)

    # Output information about the property pattern.
    Write-Host "`tName:" $pattern.PatternName
    Write-Host "`tDescription:" $pattern.Description
    Write-Host
}
C#
using System;
using Softerra.Adaxes.Adsi;
using Softerra.Adaxes.Interop.Adsi;
using Softerra.Adaxes.Interop.Adsi.PersistentObjects;
using Softerra.Adaxes.Interop.Adsi.PropertyPatterns;

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

        // Bind to the 'Property Patterns' container.
        string propertyPatternsPath = service.Backend.GetConfigurationContainerPath(
            "PropertyPatterns");
        IAdmPropertyPatternContainer propertyPatternsContainer =
            (IAdmPropertyPatternContainer)service.OpenObject(propertyPatternsPath, null, null, 0);

        // Bind to the user.
        const string userPath = "Adaxes://CN=John Smith,CN=Users,DC=domain,DC=com";
        IAdmTop user = (IAdmTop)service.OpenObject(userPath, null, null, 0);
        
        // Get effective property patterns.
        object[] propertyPatternsGuidsBytes =
            (object[])propertyPatternsContainer.GetEffectivePropertyPatterns(user);

        Console.WriteLine("Property patterns effective for the user:");
        foreach (byte[] guidBytes in propertyPatternsGuidsBytes)
        {
            // Bind to the property pattern.
            string guid = new Guid(guidBytes).ToString("B");
            string patternPath = $"Adaxes://<GUID={guid}>";
            IAdmPropertyPattern pattern = (IAdmPropertyPattern)service.OpenObject(
                patternPath, null, null, 0);

            // Output information about the property pattern.
            Console.WriteLine("\tName: " + pattern.PatternName);
            Console.WriteLine("\tDescription: " + pattern.Description);
            Console.WriteLine();
        }
    }
}

GetEffectivePropertyPatternsEx()

Returns an array of GUIDs of the property patterns effective for multiple objects. The method returns only property patterns effective for all specified objects. If a property pattern is not effective for at least one of the objects, it will not be returned.

Byte[][] GetEffectivePropertyPatternsEx(string[] targetObjectPaths)

Parameters

  • targetObjectPaths – an array of ADS paths of the objects to get effective property patterns for.

Return value

Each GUID is represented as an array of 16 bytes (Byte[]), and the method returns an array of byte arrays (Byte[][]).

You can bind to the property patterns using their GUIDs. For more information on how to bind to directory objects, see Binding to ADSI objects.

Examples

The following code sample outputs names and descriptions of property patterns effective for all specified users.

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 the 'Property Patterns' container.
$propertyPatternsPath = $service.Backend.GetConfigurationContainerPath("PropertyPatterns")
$propertyPatternsContainer = $service.OpenObject($propertyPatternsPath, $null, $null, 0)

# User paths.
$user1 = "Adaxes://CN=John Smith,CN=Users,DC=company,DC=com"
$user2 = "Adaxes://CN=Bob Jones,CN=Users,DC=company,DC=com"
$userPaths = @($user1, $user2)

# Get effective property patterns.
$propertyPatternsGuidsBytes = 
    $propertyPatternsContainer.GetEffectivePropertyPatternsEx($userPaths)

Write-Host "Property patterns effective for the users:"
foreach ($guidBytes in $propertyPatternsGuidsBytes)
{
    # Bint to the property pattern.
    $guid = [Guid]$guidBytes
    $patternPath = "Adaxes://<GUID=$guid>"
    $pattern = $service.OpenObject($patternPath, $null, $null, 0)

    # Output information about the property pattern.
    Write-Host "`tName:" $pattern.PatternName
    Write-Host "`tDescription:" $pattern.Description
    Write-Host
}
C#
using System;
using Softerra.Adaxes.Adsi;
using Softerra.Adaxes.Interop.Adsi.PersistentObjects;
using Softerra.Adaxes.Interop.Adsi.PropertyPatterns;

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

        // Bind to the 'Property Patterns' container.
        string propertyPatternsPath = service.Backend.GetConfigurationContainerPath(
            "PropertyPatterns");
        IAdmPropertyPatternContainer propertyPatternsContainer =
            (IAdmPropertyPatternContainer)service.OpenObject(propertyPatternsPath, null, null, 0);

        // User paths.
        const string user1 = "Adaxes://CN=John Smith,CN=Users,DC=company,DC=com";
        const string user2 = "Adaxes://CN=Bob Jones,CN=Users,DC=company,DC=com";
        string[] userPaths = { user1, user2 };

        // Get effective property patterns.
        object[] propertyPatternsGuidsBytes =
            (object[])propertyPatternsContainer.GetEffectivePropertyPatternsEx(userPaths);

        Console.WriteLine("Property patterns effective for the user:");
        foreach (byte[] guidBytes in propertyPatternsGuidsBytes)
        {
            // Bind to the property pattern.
            string guid = new Guid(guidBytes).ToString("B");
            string patternPath = $"Adaxes://<GUID={guid}>";
            IAdmPropertyPattern pattern = (IAdmPropertyPattern)service.OpenObject(
                patternPath, null, null, 0);

            // Output information about the property pattern.
            Console.WriteLine("\tName: " + pattern.PatternName);
            Console.WriteLine("\tDescription: " + pattern.Description);
            Console.WriteLine();
        }
    }
}

Requirements

Minimum required version: 2009.1

See also