2013-03-27 4 views
3

J'ai regardé à travers les forums et je n'ai rien trouvé qui m'aide vraiment à compléter ce que je veux faire. Ce que je cherche est un moyen de démarrer l'interface graphique d'une application sur un serveur distant. J'ai vu que je peux le faire avec PsExec tant que je sais quel est l'identifiant de session pour ma session à distance spécifique. Cependant, lorsque les identifiants de session changent, ce n'est pas quelque chose que je peux utiliser de manière fiable. Est-il possible de faire ce qui suit:Démarrer l'application GUI sur le serveur distant

  • Avoir un ID de session permanente pour un utilisateur spécifique
  • Trouver l'ID de session pour un utilisateur spécifique
  • D'autres façons de démarrer l'interface graphique dans ma session sur le serveur

Toute aide serait appréciée.

+1

Pour tout recherche pour une solution à cela - j'ai utilisé le code trouvé ici http://taskscheduler.codeplex.com/. C'est un peu saccadé d'avoir à passer par le planificateur de tâches, mais il obtient ce dont j'avais besoin accompli. – tylerauerbeck

Répondre

1

J'avais l'habitude d'implémenter quelque chose comme ceci quand nécessaire pour lancer des tests de gui sur la machine distante.

Vous pouvez utiliser le paramètre -i de psexec, ce qui irait à la commande « interactive » dans la session spécifiée, pour un utilisateur spécifique, il ressemble à ceci:

psexec.exe \\<MachineName> -u <Username> -p <Password> -i <SessionNumber> 

Pour obtenir sessionNumber vous pouvez également utiliser le même Utilitaire psexec, vous pouvez exécuter une "session de requête" sur l'ordinateur distant pour l'utilisateur spécifié.

Vous pouvez créer fichier .bat qui renverrait numéro de session avec le code suivant:

@echo off 
setlocal enabledelayedexpansion 

set username=%2 
set password=%3 
set machine=%1 

psexec.exe \\%machine% -u %username% -p %password% query session %username%>sessid.txt 

set /a counter=0 
for /F "tokens=* skip=1" %%a in (sessid.txt) do (
for %%b in (%%a) do (
set /a counter+=1 
if !counter! == 3 (
    echo !counter!:%%b 
    exit %%b 
) 
) 
) 

Ce fichier batch fonctionne bien pour moi, vous pouvez l'utiliser comme ceci

getSessionNumber.bat <ServerName> <User> <Password> 
Questions connexes