0

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

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

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

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

  $ret = dsacls ${perStr}

上面给出了一个错误:

Invalid DN Syntax

当我使用硬编码值运行时,它运行良好。

4

1 回答 1

1

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

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

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

于 2017-12-04T22:31:25.200 回答