在 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"
会起作用。
如何使用 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"
会起作用。