2017-12-04 30 views
0

'dsacls'コマンドを使用して、powershellスクリプト内のservicePrincipalName権限を変更しようとしています。dsacls - powershellで無効なDN構文

私はすべての動的パラメータをスクリプト引数として取ります。

私が受け取った引数変数を使用してコマンドを作成すると、スクリプトが機能しません。私は文字列の操作に欠けているものがあります。

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

    $ret = dsacls ${perStr} 

上記のエラーを与える:私はハードコードされた値を使用して実行すると

Invalid DN Syntax 

それが正常に動作します。

+1

これは機能しますか? 'dsacls $ strDN/G(" {0} \ {1}:RPWP; servicePrincipalName "-f $ DomainNetBIOSName、$ SQLUser)' –

+0

@Bill_Stewartチャームのように働いてくれました。 – ExploringApple

答えて

1

外部実行可能ファイルで使用する文字列を作成するのに苦労しているときは、コマンド全体を構築してからInvoke-Expressionを実行する傾向があります。このような何か:

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

--%は、それが入力したとおりに正確にすべての引数を取り、コマンドに渡すなりますので、その点を超えて物事を解釈停止することを教えてくれます。それがあなたに適しているかどうかを確認してください。そうでない場合は、$perStrの内容を見て、正しいかどうかを確認してください。

+0

一生懸命働いた、ありがとう! – ExploringApple

+0

この問題が解決した場合は、似たような問題が発生した場合に将来のユーザーが問題を発見するのを助けるために、問題があればそれをマークしてください。 – TheMadTechnician