在远程服务器上启动GUI应用程序

时间:2013-03-27 22:55:29

标签: c# powershell client-server psexec

我浏览了论坛,但没有找到任何可以帮助我完成我想做的事情。我正在寻找的是一种为远程服务器上的应用程序启动GUI的方法。我已经看到我可以使用PsExec执行此操作,只要我知道特定远程会话的会话ID是什么。但是,随着会话ID的改变,这不是我可以可靠使用的东西。有没有办法做到以下几点:

  • 拥有特定用户的永久会话ID
  • 查找特定用户的会话ID
  • 在我的服务器会话中启动GUI的其他方法

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

我需要在远程机器上启动gui测试时实现类似的功能。

您可以使用psexec的-i参数,该参数将在指定会话中以“交互方式”运行命令,对于特定用户,它看起来像这样:

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

要获取sessionNumber,您还可以使用相同的psexec实用程序,您可以在远程计算机上为指定用户执行“查询会话”。

您可以使用以下代码创建将返回会话号的.bat文件:

@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
)
)
)

这个批处理文件适用于我,你可以像这样使用它

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