Nanoserver2016データセンターエディションで実行されている新しいファイルサーバーを構成しています。現在、ユーザーフォルダーを作成するためのPowerShellスクリプトに取り組んでいます。しかし、icaclsコマンドを使用して権限を設定するとエラーが発生します。
Enter-PSSession -Computername Test01 -Credential administrator
$Domain = "MYDOMAIN"
$user = Read-Host -Prompt 'Type in the username'
$UD = $Domain +"\"+ $user
E:\
mkdir e:\usernt\$user
mkdir e:\usernt\$user\temp
mkdir e:\usernt\$user\templates
mkdir e:\usernt\$user\Lotus\notes
mkdir e:\usernt\$user\MyBar
copy c:\MyBar e:\usernt\$user\MyBar
New-SmbShare -Name $user$ -Path e:\usernt\$user
Grant-SmbShareAccess -Name $user$ -AccountName Everyone -AccessRight full
icacls e:\usernt\$user /T /C /grant '$UD:(OI)(CI)F'
ただし、次のエラーが発生します。
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
コードをユーザー名に変更すると(MYDOMAIN\t.test
)変数($UD
)正常に動作します。
icacls e:\usernt\$user /T /C /grant 'MYDOMAIN\t.test:(OI)(CI)F'
また、$ UDの値を確認すると、MYDOMAIN\t.testに正しく設定されています。
文字列内の変数を展開するには、一重引用符ではなく二重引用符を使用します。
icacls e:\usernt\$user /T /C /grant "$UD:(OI)(CI)F"