Eu tenho um ambiente de servidor de terminal exclusivamente com o Windows Server 2008.
Meu problema é que eu preciso "mapear" uma letra de unidade para cada pasta Temp usuários. Isso se deve a um aplicativo legado que exige uma pasta Temp separada para cada usuário, mas que não entende% temp%.
Então, basta adicionar "subst t:% temp%" ao script de logon, certo?
O problema é que, embora o comando seja executado, o subst não "gruda" e o usuário não obtém um drive T:.
Aqui está o que eu tentei;
A versão mais simples:
'Mapping a temp drive
Set WinShell = WScript.CreateObject("WScript.Shell")
WinShell.Run "subst T: %temp%", 2, True
Isso não funcionou, então tentei isso para mais informações de depuração:
'Mapping a temp drive
Set WinShell = WScript.CreateObject("WScript.Shell")
Set procEnv = WinShell.Environment("Process")
wscript.echo(procEnv("TEMP"))
tempDir = procEnv("TEMP")
WinShell.Run "subst T: " & tempDir, 3, True
Isso mostra o caminho temp correto quando o usuário efetua login - mas ainda não há T: Drive. Decidi recorrer à força bruta e colocar isso no meu script de login:
'Mapping a temp drive
Set WinShell = WScript.CreateObject("WScript.Shell")
WinShell.Run "\domain\sysvol\esl.hosted\scripts\tempdir.cmd", 3, True
onde \ domain \ sysvol \ esl.hosted \ scripts \ tempdir.cmd tem este conteúdo:
echo on
subst t: %temp%
pause
Quando eu me conecto com o acima, a janela de comando se abre e eu posso ver o comando subst sendo executado corretamente, com o caminho correto. Mas ainda não T: drive.
Eu tentei executar todos os scripts acima fora de um script de login e eles sempre funcionam perfeitamente - esse problema só ocorre ao fazer isso de dentro de um script de login.
Encontrei uma referência passageira em um fórum do MSFN sobre um problema semelhante quando o usuário já está logado em outra máquina - mas eu tenho esse problema mesmo sem estar logado em outra máquina.
Qualquer sugestão sobre como superar isso será muito apreciada.