Sorry, search feature is not supported in Internet Explorer 11

Get identifier of Adaxes configuration object

Each Adaxes configuration object (e.g. custom command, report, business unit) has an immutable identifier that doesn't change even after the configuration backup/restore. These identifiers can be used to locate and refer to specific configuration objects in your scripts. For example, to execute a custom command in a script,
you need to know its identifier, which can be obtained using one of the methods below.

Get identifier by object name

To search for a configuration object by name and get its identifier, use the following script.

In the script:

  • $serviceHost – the host name of the computer where the Adaxes service is installed.
  • $objectNameToSearch – the name of the configuration object to search for.

Tip

$objectNameToSearch can contain wildcards (* character) to get the identifiers of multiple objects or search for objects whose name you're unsure of. For example:

  • Specify My* to get the identifiers of all objects whose names start with My.
  • Specify * to get the identifiers of all configuration objects.
[Reflection.Assembly]::LoadWithPartialName("Softerra.Adaxes.Adsi")

$serviceHost = "localhost"
$objectNameToSearch = "My object*"

# Prompt for credentials.
$credential = Get-Credential

# Connect to the Adaxes service.
$admNS = New-Object "Softerra.Adaxes.Adsi.AdmNamespace"
$admService = $admNS.GetServiceDirectly("$serviceHost")

# Search objects
$objectClassFilter = "(|(objectClass=adm-CustomCommand)(objectClass=adm-BusinessRule)" `
    + "(objectClass=adm-BusinessUnit)(objectClass=adm-PropertyPattern)" `
    + "(objectClass=adm-Report)(objectClass=adm-ReportOverview))"
$filter = "(&" + $objectClassFilter + "(name=$objectNameToSearch))"
$configRootPath = $admService.Backend.GetConfigurationContainerPath("ConfigurationRoot")
$searcher = $admService.OpenObject($configRootPath, 
    $credential.UserName, $credential.GetNetworkCredential().Password, 0)
$searcher.SearchFilter = $filter
$searcher.SearchScope = "ADS_SCOPE_SUBTREE"
    
try
{
    # Execute search
    $searchResultIterator = $searcher.ExecuteSearch()
    $searchResults = $searchResultIterator.FetchAll()
    
    if ($searchResults.Length -gt 0)
    {
        foreach ($searchResult in $searchResults)
        {
            if ($searchResult.ObjectType -eq "objectClass=adm-CustomCommand")
            {
                $id = [Guid]$searchResult.Properties["adm-CustomCommandID"].Value
            }
            else
            {
                $id = [Guid]$searchResult.Properties["adm-ObjectID"].Value
            }

            # Output information
            Write-Host "`nName:" $searchResult.Properties["name"].Value
            Write-Host "ID:" $id
            Write-Host "Type:" $searchResult.ObjectType
            Write-Host "DN:" $searchResult.Properties["distinguishedName"].Value
        }
    }
    else
    {
        Write-Host "`nNo objects found."
    }
}
finally
{
    # Release resources
    if ($searchResultIterator){ $searchResultIterator.Dispose() }
}

Get identifier by DN

If you know the distinguished name of the configuration object, you can get its identifier using the following script.

In the script:

  • $serviceHost – the host name of the computer where the Adaxes service is installed.
  • $objDN – the distinguished name of an Adaxes configuration object. For details on how to get the DN of a configuration object, see Get the DN of a directory object.
[Reflection.Assembly]::LoadWithPartialName("Softerra.Adaxes.Adsi")

$serviceHost = "localhost" 
$objDN = "CN=My Command,CN=Custom Commands,CN=Configuration Objects,CN=Adaxes Configuration,CN=Adaxes"

# Prompt for credentials.
$credential = Get-Credential

# Connect to the Adaxes service.
$admNS = New-Object "Softerra.Adaxes.Adsi.AdmNamespace"
$admService = $admNS.GetServiceDirectly($serviceHost)

# Bind to the configuration object.
$configObject = $admService.OpenObject("Adaxes://$objDN", $credential.UserName, `
    $credential.GetNetworkCredential().Password, 0)

# Get object identifier.
if ($configObject.Class -ne "adm-CustomCommand")
{
    $id = [Guid]$configObject.Get("adm-ObjectId")
}
else
{
    $id = [Guid]$configObject.Get("adm-CustomCommandId")
}

Write-Host "ID: $id"

See also