2016-01-04 2 views
3

Я хочу создать новую группу Active Directory и использовать «#» в качестве первого символа в своем имени. но я получил сообщение об исключении, сказал недействительный «dn» в моем коде C#. Я знаю, что «#» является специальным символом в скрипте powershell, затем я избегаю «#» с одинарной цитатой, без исключения из моего кода на C#, и новая группа Active Directory также была успешно создана. Но одинарная кавычка также отображается на плате Active Directory.Создайте группу Active Directory с именем «#» в качестве первого символа в имени с помощью C#

string name = "#ABC"; 
public void Create(string ouPath, string name) 
{ 
    if (!DirectoryEntry.Exists("LDAP://CN=" + name + "," + ouPath)) 
    { 
     try 
     { 
      DirectoryEntry entry = new DirectoryEntry("LDAP://" + ouPath); 
      DirectoryEntry group = entry.Children.Add("CN=" + name, "group"); 
      group.Properties["sAmAccountName"].Value = name; 
      group.CommitChanges(); 
     } 
     catch (Exception e) 
     { 
      Console.WriteLine(e.Message.ToString()); 
     } 
    } 
    else { Console.WriteLine(path + " already exists"); } 
} 

enter image description here

Есть ли кто-нибудь может помочь мне создать группу Active Directory с «#» в качестве первого символа в имени?

спасибо.

ответ

0

A # не допускается в качестве первого символа DN или CN. Это ограничение Active Directory.

См. here для зарезервированных символов.

Как упоминалось в конце связанной статьи, вам нужно будет избежать # с обратной косой чертой (\) вместо одной кавычки.
Обратите внимание, что в C# обратные косые черты в строках экранируются другой обратной косой чертой. Так что ваша группа имя строка должна выглядеть так:

string name = "\\#ABC"; 
string ouPath = // your ou path 
Create(ouPath, name); 

Update: Другой способ избежать зарезервированных символов с помощью обратной косой черты и шестнадцатеричного кода ASCII, который 0x23 для #. Таким образом, строка в вашем примере должна быть:

string name = "\\23ABC"; 
+0

Спасибо Vogt, ваш ответ заставляет меня понять, что привязка «#» к powershell неверна. Но использование двойной обратной косой черты не работает. – simon

+0

@simon обновил мой ответ, последняя попытка, если это не сработает, я не могу вам помочь. –

+0

Я тоже пробовал, но он еще не сработал. Я благодарю вас за ваш быстрый ответ, Фогт. – simon