如何使用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"
答案 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"
会工作的。