powershell icaclsエラー ParserError パラメーター一覧に引数が存在しません。:(OI)(CI)

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

 

アイ・オー・データ IODATA モニター 21.5インチ FHD 1080p ADSパネル 広視野角 5ms (HDMI/アナログRGB/スピーカー付/VESA対応/3年保証/土日サポート) EX-LDH221DB-B