icaclsvariables不能在PowerShell脚本中工作

我正在configuration一个运行在nanoserver 2016数据中心版上的新文件服务器。 现在我正在使用PowerShell脚本来创build用户文件夹。 但是在使用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 )而不是variables( $UD )时,它工作正常。

 icacls e:\usernt\$user /T /C /grant 'MYDOMAIN\t.test:(OI)(CI)F' 

另外,当我检查$ UD的值时,它被正确设置为MYDOMAIN \ t.test

要扩展string中的variables,请使用双引号而不是单引号。

 icacls e:\usernt\$user /T /C /grant "$UD:(OI)(CI)F"