dsacls - неверный синтаксис DN в powershell

Я пытаюсь изменить разрешение servicePrincipalName в сценарии powershell, используя 'dsacls' команда.

Я принимаю все динамические параметры в качестве аргументов скрипта.

Скрипт не работает, когда я формирую команду с полученной переменной arguments. Есть кое-что, чего мне не хватает при работе со строками.

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

  $ret = dsacls ${perStr}

Выше выдает ошибку:

Invalid DN Syntax

Когда я бегу с жестко закодированными значениями, он работает нормально.

1 ответ

Решение

Когда мне трудно создавать строки для использования с внешними исполняемыми файлами, я стараюсь собрать всю команду и затем использовать Invoke-Expression запустить его. Что-то вроде этого:

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

--% скажет, чтобы он прекратил интерпретировать вещи после этой точки, поэтому он будет принимать все аргументы в точности так, как набрано и передает их команде. Посмотрите, работает ли это для вас, и если нет, вы можете посмотреть на содержание $perStr чтобы убедиться, что это выглядит правильно для вас.

Другие вопросы по тегам