Getting effective property patterns
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 = string.Format("Adaxes://<GUID={0}>", 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(); } } }
The following code sample outputs names and descriptions of property patterns effective for multiple 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 = string.Format("Adaxes://<GUID={0}>", 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(); } } }
See also
- IAdmPropertyPatternContainer
- Binding to Adaxes-specific objects
- Managing Adaxes-specific objects
- Online script repository