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

Escape * wildcard character in Active Directory path

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

场景:我正在尝试在我们的 AD 中使用 PowerShell 创建一个计算机对象。我使用以下命令,它运行良好

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

但是,我有另一个域,我们的主服务器 OU 在单词 "Servers" 前面有 *,像这样:*Servers。如果我使用上面的命令它不起作用并且在故障排除之后,我缩小了范围并且它失败了因为 "Servers" 前面有 *

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

错误是:

New-ADComputer:由于参数错误,操作失败。
在 line:1 char:5
+ New-ADComputer -Name "ServerName1" -Path "OU=App,OU=DEV,OU=*Server,$ ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~
    + CategoryInfo:无效数据:(CN=mspgtestha08...C=viacom,DC=com:String) [New-ADComputer], ADPasswordException
    + FullyQualifiedErrorId : ActiveDirectoryServer:0,Microsoft.ActiveDirectory.Management.Commands.NewADComputer

我又找到了一个post建议用反引号,试了还是报错

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

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

MSDN 中Active Directory Search Filter Syntax 中描述了转义码,但通常是反斜杠加上十六进制字符代码。对于*,字符代码是2a,所以转义码是a

这个:

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

会起作用。