使用';创建Active Directory组#';作为其名称中的第一个字符
本文关键字:字符 第一个 Active 创建 Directory 使用 | 更新日期: 2023-09-27 18:28:47
我想创建一个新的Active Directory组,并使用"#"作为其名称中的第一个字符。但我收到一条异常消息,说我的C#代码中有一个无效的"dn"。我知道"#"是powershell脚本中的一个特殊字符,然后我用单引号转义"#",我的C#代码也不例外,新的Active Directory组也成功创建。但单引号也显示在Active Directory的板上。
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"); }
}
在此处输入图像描述
有人可以帮助我创建以"#"作为名称第一个字符的Active Directory组吗?
谢谢。
#
不允许作为DN或CN的第一个字符。这是Active Directory的限制。
有关保留字符,请参见此处。
如链接文章末尾所述,您必须使用反斜杠('
)而不是单引号来转义#
请注意,在C#中,字符串中的反斜杠由另一个反斜杠转义。所以你的组名字符串应该是这样的:
string name = "''#ABC";
string ouPath = // your ou path
Create(ouPath, name);
更新:另一种转义保留字符的方法是通过反斜杠和十六进制ascii码,即0x23
代替#
。因此,您的示例中的字符串应该是:
string name = "''23ABC";