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
чтобы убедиться, что это выглядит правильно для вас.