C#尝试使用空格创建组织单位时出错

C#尝试使用空格创建组织单位时出错,c#,active-directory,directoryentry,organizational-unit,C#,Active Directory,Directoryentry,Organizational Unit,因此,我有一个计划,需要在另一个OU下添加一个新的组织单位。格式必须与下面代码中的格式相同。问题是,如果我在名称中添加空格,我会不断收到相同的异常。我可以手动添加带有空格的OU。我在这里做错了什么 代码如下: string ou = "OU=" + "New Company 99999"; try { if (DirectoryEntry.Exists("LDAP://" + ou + ",OU=MainOrganizat

因此,我有一个计划,需要在另一个OU下添加一个新的组织单位。格式必须与下面代码中的格式相同。问题是,如果我在名称中添加空格,我会不断收到相同的异常。我可以手动添加带有空格的OU。我在这里做错了什么

代码如下:

        string ou = "OU=" + "New Company 99999";

        try
        {
            if (DirectoryEntry.Exists("LDAP://" + ou + ",OU=MainOrganizationalUnit,DC=domain,DC=com"))
            {
                MessageBox.Show(ou + " exists.");
            }
            else
            {
                MessageBox.Show(ou + " does not exist. Creating...");

                using (DirectoryEntry entry = new DirectoryEntry("LDAP://OU=MainOrganizationalUnit,DC=domain,DC=com"))
                {
                    using (DirectorySearcher searcher = new DirectorySearcher(entry))
                    {
                        searcher.Filter = "(" + ou + ")";
                        searcher.SearchScope = SearchScope.Subtree;
                        SearchResult result = searcher.FindOne();

                        if (result == null)
                        {
                            /* OU Creation */
                            DirectoryEntry de = entry.Children.Add(ou, "organizationalUnit");
                            de.Properties["description"].Value = "This is a Test";
                            de.CommitChanges();
                        }
                    }
                }
            }
        }
        catch (Exception Ex)
        {
            LogWriter.Exception(Ex);
        }
运行此代码时,会记录以下错误: System.DirectoryServices.DirectoryServicesCOMException(0x80072037):存在命名冲突

位于System.DirectoryServices.DirectoryEntry.CommitChanges()处
在MyProgram.MyStaticClass.function()

上,我目前正在使用一种变通方法,但我觉得我不应该这样做。基本上,我现在创建一个没有空格的临时OU名称,然后重命名它

DirectoryEntries des = entry.Children;
DirectoryEntry badObject = des.Find(ou);
badObject.Rename("OU=With Spaces 99999");
entry.CommitChanges();

重命名OU似乎不是理想的解决方案。 试着用反斜杠避开空格

string ou = "OU=" + "New\\ Company\\ 99999"; 

显示在将LDAP与AD一起使用时必须转义的字符。

如果没有帮助,您可能可以通过alin to
string ou=“ou=”+@“New Company 9999”中的某些内容逃脱@MadMyche我实际上是在使用一个单独的解决方案。似乎我可以将现有的OU重命名为包含空格的对象<代码>目录条目des=entry.Children
DirectoryEntry badObject=des.Find(ou)
badObject.Rename(“OU=With Spaces 99999”)
entry.CommitChanges()谢谢。实际上,我切换到了一个生成powershell脚本并执行该脚本的方法。