Active Directory路径中的转义*通配符

时间:2019-01-23 04:50:02

标签: string powershell active-directory escaping wildcard

如何使用PowerShell将*通配符转换为原义字符?

方案:我正在尝试在AD中使用PowerShell创建计算机对象。我使用以下命令,它运行正常

New-ADComputer -Name "ServerName1" -Path "OU=App,OU=DEV,OU=Server,DC=domain,DC=com"

但是,我有另一个域,我们的主服务器OU在“服务器”一词前有*,例如:*Servers。如果我使用上面的命令不起作用,并且在进行故障排除后,我缩小了范围,但失败了,因为“服务器”位于*前面。

New-ADComputer -Name "ServerName1" -Path "OU=App,OU=DEV,OU=*Server,DC=domain,DC=com"

错误是:

New-ADComputer: The operation failed because of a bad parameter.
At line:1 char:5
+    New-ADComputer -Name "ServerName1" -Path "OU=App,OU=DEV,OU=*Server,$ ...
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidData: (CN=mspgtestha08...C=viacom,DC=com:String) [New-ADComputer], ADPasswordException
    + FullyQualifiedErrorId : ActiveDirectoryServer:0,Microsoft.ActiveDirectory.Management.Commands.NewADComputer

我发现了另一篇文章,建议使用反引号,但我仍然尝试得到该错误。

New-ADComputer -Name "ServerName1" -Path "OU=App,OU=DEV,OU=`*Server,DC=domain,DC=com"

1 个答案:

答案 0 :(得分:1)

LDAP搜索过滤器中保留了几个字符(*()\/和null字节)。可以在LDAP查询中转义任何 字符,但必须转义那些保留的

转义码在MSDN中的Active Directory Search Filter Syntax下进行了描述,但通常是反斜杠加上十六进制字符代码。对于*,字符代码为2a,因此转义码为\2a

此:

New-ADComputer -Name "ServerName1" -Path "OU=App,OU=DEV,OU=\2aServer,DC=domain,DC=com"

会工作的。