I'm struggling to create an OU for Active Directory using the code below.
strPath = "OU=TestOU,DC=Internal,DC=Com"
DirectoryEntry objOU;
objOU = ADentry.Children.Add(strPath, "OrganizationalUnit");
objOU.CommitChanges();
The problem is strPath contains the full path 'OU=TestOU,DC=Internal,DC=net' so using .Children.Add is making the ldap path 'OU=TestOU,DC=Internal,DC=net,DC=Internal,DC=net' which results in an error as the domain obviously doesn't exist.
My question is can I create an OU using strPath
without .Children.Add
?
I'm not familiar with AD and this is something I inherited from the guy before me.
-
try this using System; using System.DirectoryServices;
namespace ADAM_Examples { class CreateOU { /// <summary> /// Create AD LDS Organizational Unit. /// </summary> [STAThread] static void Main() { DirectoryEntry objADAM; // Binding object. DirectoryEntry objOU; // Organizational unit. string strDescription; // Description of OU. string strOU; // Organiztional unit. string strPath; // Binding path. // Construct the binding string. strPath = "LDAP://localhost:389/O=Fabrikam,C=US"; Console.WriteLine("Bind to: {0}", strPath); // Get AD LDS object. try { objADAM = new DirectoryEntry(strPath); objADAM.RefreshCache(); } catch (Exception e) { Console.WriteLine("Error: Bind failed."); Console.WriteLine(" {0}", e.Message); return; } // Specify Organizational Unit. strOU = "OU=TestOU"; strDescription = "AD LDS Test Organizational Unit"; Console.WriteLine("Create: {0}", strOU); // Create Organizational Unit. try { objOU = objADAM.Children.Add(strOU, "OrganizationalUnit"); objOU.Properties["description"].Add(strDescription); objOU.CommitChanges(); } catch (Exception e) { Console.WriteLine("Error: Create failed."); Console.WriteLine(" {0}", e.Message); return; } // Output Organizational Unit attributes. Console.WriteLine("Success: Create succeeded."); Console.WriteLine("Name: {0}", objOU.Name); Console.WriteLine(" {0}", objOU.Properties["description"].Value); return; } } }
-
The only way to create an object with System.DirectoryServices is to create a DirectoryEntry object to the parent and use DirectoryEntry.Children.Add.
I think your best move at this point is to use the path you have and extract the part you need ("OU=something").
-
I think your best move at this point is to use the path you have and extract the part you need ("OU=something").
Thanks Steve
0 comments:
Post a Comment