powershell icaclsエラーが発生し、対象法が確認できたのでシェアします。
Windowsサーバを運用しているとicaclsコマンドを使用することがあるかと思います。
Powershellで高度なセキュリティ設定を入れようとして、コマンドを準備したのですが、以下のエラーが表示されました。
===
発生場所 行:1 文字:52
+ icacls "C:\sharefolder\test\" /grant testuser:(OI)(CI)(rx,w,dc)
+ ~
パラメーター一覧に引数が存在しません。
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : MissingArgument
===
「(OI)(CI)(rx,w,dc)」の箇所に「~」が表示されているので、この辺りが影響しているように見えます。
海外のサイトに同じようなエラーがでています。
しかし、次のエラーが発生します。
icacls : $UD: No mapping between account names and security IDs was done.
At line:1 char:1
+ icacls e:\usernt\$user /T /C /grant '$UD:(OI)(CI)F'
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: ($UD: No mapping...y IDs was done.:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
回答です。
文字列内の変数を展開するには、一重引用符ではなく二重引用符を使用します。
icacls e:\usernt\$user /T /C /grant "$UD:(OI)(CI)F"
二重引用符を使用することでエラーがでなくなりました。同様の事象が発生した場合は、参考になるかと思います。
「引用元」
icacls variable not working in powershell script
https://serverfault.com/questions/867477/icacls-variable-not-working-in-powershell-script