icacls variável não está funcionando no script powershell

2

Estou configurando um novo servidor de arquivos em execução na edição de datacenter do nanoserver 2016. Agora eu estou trabalhando em um script PowerShell para criar pastas de usuários. Mas recebo um erro ao usar o comando icacls para definir permissões.

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' 

Mas dá o seguinte erro:

 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  

Quando eu mudo o código para o nome de usuário ( MYDOMAIN\t.test ) ao invés da variável ( $UD ) ele funciona bem.

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

Além disso, quando verifico o valor de $ UD, ele é definido corretamente como MYDOMAIN \ t.test

    
por Gerald 08.08.2017 / 12:23

2 respostas

2

Para expandir variáveis dentro de uma string, use aspas duplas e não as únicas.

icacls e:\usernt\$user /T /C /grant "$UD:(OI)(CI)F"
    
por 08.08.2017 / 14:54
-1

Variáveis dentro de aspas duplas são expandidas, mas dentro de aspas simples elas não são.

PS C:\> $var = "Tomato"
PS C:\> write-host '$var'
$var
PS C:\> write-host "$var"
Tomato

Leia mais em get-help about_Quoting_Rules
Ele funcionará se você modificar as aspas no comando ICACLS da seguinte forma:

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