Variable dos %Sessionname% en VBscript

NaooeK Messages postés 4 Date d'inscription mercredi 28 juin 2006 Statut Membre Dernière intervention 21 septembre 2012 - 23 sept. 2006 à 23:26
mdbasources Messages postés 1 Date d'inscription lundi 4 octobre 2004 Statut Membre Dernière intervention 19 février 2008 - 19 févr. 2008 à 17:41
http://www.vbfrance.com/auteurdetail.aspx?ID=865687
 Bonjour,

Voila mon pb, j'utilise le script suivant pour afficher l'adresse IP et nom d'hôte de la machine et cela fonctionne très bien mais je voudrais que la boite de dialogue affiche également de nom de la session en cours contenu dans la variable %SESSIONNAME% lorsque l'on exécute la commande set sous dos

Ma question comment utiliser la variable dos %SESSIONNAME% en vbs

on error resume next
set IPConfigSet = GetObject("winmgmts:{impersonationLevel=impersonate}!//" & Computer).ExecQuery _
("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=TRUE")
If Err.Number<>0 Then
wscript.echo " - non accessible -"
Else
for each IPConfig in IPConfigSet
wscript.echo " Configuration réseau du terminal " & computer & vbcrlf & vbcrlf & _
" Adresse IP " & vbtab & " : " & IPConfig.IPAddress(0) & vbcrlf & _
" DNSHostName " & vbtab & " : " & IPConfig.DNSHostName
" Session Name " & vbtab & " : " ??????????????????
Next
End If

Merci de votre aide

NaooeK

3 réponses

cs_xelanet Messages postés 2 Date d'inscription mercredi 25 août 2004 Statut Membre Dernière intervention 3 juin 2007
3 juin 2007 à 15:44
Un peut tard mais..... voici 2 solutions.....
Peut-être pour quelqu'un d'autre....

La variable d'environnement %SESSIONNAME% est une variable d'environnement volatile.
En vbs :  
    Dim wshShell, objEnv, strSessionName
Set wshShell = Wscript.CreateObject("Wscript.Shell")
Set objEnv = wshShell.Environment("VOLATILE")
strSessionName = objEnv("SESSIONNAME")
' et hop
msgbox " Session Name " & vbtab & " : " &strSessionName
Les variables volatiles sont inscritent dans le registre sous la clé:
"HKCU\Volatile Environment". Chaque variable volatile y possède un nom de valeur et une valeur qui correspond respectivement au nom de la variable et à sa valeur.
Soit toujours en vbs:
    Const REG_VOLATILE = "HKCU\Volatile Environment"
    Dim wshShell, strSessionName
Set whsShell = Wscript.CreateObject ("Wscript.Shell")
On Error Resume Next
strSessionName = wshShell.RegRead (REG_VOLATILE & "SESSIONNAME")
On Error Goto 0
' et hop
msgbox " Session Name " & vbtab & " : " & strSessionName

Remarque:

L'instruction On Error Resume Next qui active la gestion d'erreur est  appellée avant de lire la valeur, ainsi si le nom de valeur n'existe pas (tous les système Windows ne dispose pas forcement cette variable d'environnement), une chaine vide est retournée (comme dans le premier script). Après la lecture de la valeur, l'instruction On Error Goto 0 est ensuite exécutée pour désactivé la gestion d'erreur.
0
cs_xelanet Messages postés 2 Date d'inscription mercredi 25 août 2004 Statut Membre Dernière intervention 3 juin 2007
3 juin 2007 à 16:00
Pssst....
Dans la première solution, la variable %SESSIONNAME% peut aussi être récupérée avec un type PROCESS, remplacer la ligne 3 par :
Set objEnv = wshShell.Environment("PROCESS")
0
mdbasources Messages postés 1 Date d'inscription lundi 4 octobre 2004 Statut Membre Dernière intervention 19 février 2008
19 févr. 2008 à 17:41
Petite précision :
Sous Win2003 Server, il faut utiliser le type "PROCESS" (car "VOLATILE" récupère une chaine vide)

Un grand merci à xelanet
jp
0
Rejoignez-nous