dsacls - powershell中的无效DN语法

时间:2017-12-04 22:01:57

标签: string windows powershell active-directory powercommands

我正在尝试使用'dsacls'命令修改powershell脚本中的servicePrincipalName权限。

我将所有动态参数作为脚本参数。

当我使用我收到的参数变量形成命令时,脚本无效。字符串操作有一些我缺少的东西。

 $perStr ='"' + $strDN + '"' + ' /G ' + $DomainNetBIOSName + '\' + $SQLUser + ':RPWP;"servicePrincipalName"'

  $ret = dsacls ${perStr}

上面给出了一个错误:

Invalid DN Syntax

当我使用硬编码值运行时,运行正常。

1 个答案:

答案 0 :(得分:1)

当我很难构造用于外部可执行文件的字符串时,我倾向于构建整个命令,然后使用Invoke-Expression来运行它。像这样:

$perStr = '& dsacls --% "{0}" /G {1}\{2}:RPWP;"servicePrincipalName"' -f $strDN, $DomainNetBIOSName, $SQLUser
$ret = Invoke-Expression -Command $perStr

--%将告诉它停止解释超出该点的事情,因此它将所有参数完全视为类型并将它们传递给命令。看看它是否适合您,如果不是,您可能需要查看$perStr的内容,以确保它适合您。