Quantcast
Viewing all articles
Browse latest Browse all 27765

%clientname% environment variable at login script problem

Hi there, 

I have a strange problem here on my new Windows server 2008 Standard with terminal services. 
I have a script to add printers in association with the clientname (it works correctly on my 2k3 TS for over 2 years now)

But on my new 2k8 server, I can't get the %clientname% variable at logon. 

I've made some testing by using a batch file with the command "Set"  in User Login script by GPO and then running the same script in the user Session :

here are the results :

Login script : 

C:\Windows>set
ALLUSERSPROFILE=C:\ProgramData
APPDATA=C:\Users\rana02\AppData\Roaming
CLASSPATH=.;C:\Program Files (x86)\Java\jre6\lib\ext\QTJava.zip
CommonProgramFiles=C:\Program Files\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
COMPUTERNAME=SAPP4
ComSpec=C:\Windows\system32\cmd.exe
FP_NO_HOST_CHECK=NO
HOMEDRIVE=Z:
HOMEPATH=\
HOMESHARE=\\sficetu1\UGestion$\rana02
Image=\\sapp4\Profiles$\Users
ImageInstall=\\sapp4\Profiles$\UserInstall
LOCALAPPDATA=C:\Users\rana02\AppData\Local
LOGONSERVER=\\SDC2
NUMBER_OF_PROCESSORS=8
OS=Windows_NT
Path=\\UQAT.PRIV\SysVol\UQAT.PRIV\Policies\{2DB4072B-1FA1-4442-8365-B79B386F5DF2
}\User\Scripts\Logon;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\
Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\QuickTime\QTSyst
em\;C:\Program Files\SAS\SharedFiles(32)\Formats;C:\Program Files (x86)\Druide\A
ntidote;C:\PROGRA~2\Druide\Antidote
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
PROCESSOR_ARCHITECTURE=AMD64
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 23 Stepping 6, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=1706
ProgramData=C:\ProgramData
ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)
PROMPT=$P$G
PUBLIC=C:\Users\Public
QTJAVA=C:\Program Files (x86)\Java\jre6\lib\ext\QTJava.zip
SEE_MASK_NOZONECHECKS=1
SystemDrive=C:
SystemRoot=C:\Windows
TEMP=C:\Users\rana02\AppData\Local\Temp
TKPATHX8664=C:\Program Files\SAS\SharedFiles\ICU
TMP=C:\Users\rana02\AppData\Local\Temp
USERDNSDOMAIN=UQAT.PRIV
USERDOMAIN=UQAT
USERNAME=rana02
USERPROFILE=C:\Users\rana02
windir=C:\Windows

C:\Windows>pause
Appuyez sur une touche pour continuer...


Batch file manually executed in the user Session :

C:\Windows>set
ALLUSERSPROFILE=C:\ProgramData
APPDATA=C:\Users\rana02\AppData\Roaming
CLASSPATH=.;C:\Program Files (x86)\Java\jre6\lib\ext\QTJava.zip
CLIENTNAME=RNDEP
CommonProgramFiles=C:\Program Files\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
COMPUTERNAME=SAPP4
ComSpec=C:\Windows\system32\cmd.exe
FP_NO_HOST_CHECK=NO
HOMEDRIVE=Z:
HOMEPATH=\
HOMESHARE=\\sficetu1\UGestion$\rana02
Image=\\sapp4\Profiles$\Users
ImageInstall=\\sapp4\Profiles$\UserInstall
LOCALAPPDATA=C:\Users\rana02\AppData\Local
LOGONSERVER=\\SDC2
NUMBER_OF_PROCESSORS=8
OS=Windows_NT
Path=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32
\WindowsPowerShell\v1.0\;C:\Program Files (x86)\QuickTime\QTSystem\;C:\Program F
iles\SAS\SharedFiles(32)\Formats;C:\Program Files (x86)\Druide\Antidote;C:\PROGR
A~2\Druide\Antidote
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
PROCESSOR_ARCHITECTURE=AMD64
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 23 Stepping 6, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=1706
ProgramData=C:\ProgramData
ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)
PROMPT=$P$G
PUBLIC=C:\Users\Public
QTJAVA=C:\Program Files (x86)\Java\jre6\lib\ext\QTJava.zip
SESSIONNAME=RDP-Tcp#0
SystemDrive=C:
SystemRoot=C:\Windows
TEMP=C:\Users\rana02\AppData\Local\Temp\2
TKPATHX8664=C:\Program Files\SAS\SharedFiles\ICU
TMP=C:\Users\rana02\AppData\Local\Temp\2
USERDNSDOMAIN=UQAT.PRIV
USERDOMAIN=UQAT
USERNAME=rana02
USERPROFILE=C:\Users\rana02
windir=C:\Windows

C:\Windows>pause
Appuyez sur une touche pour continuer...

as you can see, the %clientname% returns my computer name (RNDEP) only when it is executed in the user session but not on the User login script by gpo.

If I run manually the vbs script to add printer into my session on the TS, the printers are mapped without problems.


Spec :
Windows Server 2008 Standard SP1
all MS updates
2 hotfix : 
http://support.microsoft.com/kb/955555/en-us
http://support.microsoft.com/kb/949528/en-us


imprimante.vbs script to add my printers : 

DIM Ordinateur, Imprimante, ImprimanteWin  
Dim fso, MyFile  
Dim Input  
dim arrInput  
dim Debut, fin, AjoutImprimante, Defaut, User, Utilisateur  
Const ForReading = 1  
 
Dim X  
set X = createobject("WSCRIPT.Network")  
dim U  
U=x.UserName  
 
wscript.sleep(2000)  
 
'Création des références d'objets  
Set WshNet = WScript.CreateObject("WScript.Network")  
Set net = WScript.CreateObject("WScript.Network")  
Set WshNetwork = CreateObject("WScript.Network")  
Set WshShell = WScript.CreateObject("WScript.Shell")  
Set WshSysObj = WshShell.Environment("PROCESS")  
 
Set fso = CreateObject("Scripting.FileSystemObject")  
 
 
strComputer = "." 
Set objWMIService = GetObject("winmgmts:" _  
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")   
Set colComputer = objWMIService.ExecQuery _  
    ("Select * from Win32_ComputerSystem")  
For Each objComputer in colComputer  
    User= objComputer.UserName  
Next 
 
set net=nothing  
 
 
Imprimante= "" 
ImprimanteWin="aucune" 
 
 
on error resume next  
 
' Identification des imprimantes selon le POSTE de travail   
Set tsInputFile = fso.OpenTextFile("\\UQAT.PRIV\SysVol\UQAT.PRIV\Policies\{2DB4072B-1FA1-4442-8365-B79B386F5DF2}\User\Scripts\Logon\ImprimanteDefinitionNomOrdi.txt", ForReading, False)  
 
 
 
While Not tsInputFile.AtEndOfStream  
 
  strLine = tsInputFile.ReadLine  
 
  if not (strLine ="") and not (left(strLine,1)="'") then   
    arrInput = Split(strLine, ":")  
    Debut = arrInput(0)  
    fin=arrInput(1)  
    AjoutImprimante=arrInput(2)  
    Defaut=arrInput(3)  
    if ((ucase(Ordinateur) >= ucase(Debut) and ucase (ordinateur)<=ucase(fin)) and len(ordinateur)=len(fin)) or ((ucase(Ordinateur) >= ucase(Debut) and ucase (ordinateur)<=ucase(fin)) and len(ordinateur)=len(debut))  then  
     ' A  : ajouter l'imprimante  
     ' D  : définir l'imprimante par défaut  
     ' AD : On ajoute l'imprimante et elle devient l'imprimante par défaut  
       if (ucase(Defaut) = "A") then  
          WshNetwork.AddWindowsPrinterConnection AjoutImprimante  
       end if  
       if (ucase(Defaut) = "D") then  
          WshNetwork.SetDefaultPrinter AjoutImprimante  
       end if  
       if (ucase(Defaut) = "AD") then  
          WshNetwork.AddWindowsPrinterConnection AjoutImprimante  
          WshNetwork.SetDefaultPrinter AjoutImprimante  
       end if  
 
     end if  
  end if  
 
Wend  
 
tsInputFile.Close  
 
WScript.Quit 



 


Viewing all articles
Browse latest Browse all 27765

Trending Articles