2013-04-17 112 views
1

我必须deploy我的.NET软件在几个RDP Servers(MS Srv)。由于安全原因,没有可用的网络共享。通过RDP脚本自动部署

是否有可能通过script(powershell)或类似的东西来实现此过程的自动化?

在此刻我

  • 创建部署包(点击一次通过VS2012发布)
  • 开始RDP
  • 复制应用到远程文件系统
  • 重复此步骤,为每个服务器

我想让这个过程简单些......

我只找到这个线程到现在为止,我不知道这是否是我的帮助: Copy files to a remote server via RDP using a script 有没有人的experiance与这个主题?

回答

2

RDP文件传输通过一个相当复杂的隧道过程来工作,在这个过程中,您的计算机最终以tsclient身份暴露给服务器。编写脚本并不可行,因为它涉及交互式会话。

您是否考虑过自动化工具? Inedo的BuildMaster可以轻松处理这个文件传输(并且它比RDP更安全/强大)。将它设置为构建ClickOnce项目以及直接从您的源代码控制中进行设置是非常简单的。从听起来,BuildMaster的免费版本对你的要求来说可能更好。

(声明:我Inedo工作)

+0

这应该是像teamcity的东西?我对BuildMaster的可用性不太满意......我仍然需要RDP,因为我只能通过RDP访问服务器。我说的Thie网络是一个客户的网络,如果我告诉他们他们应该打开他们的网络,他们不会很高兴。 – JuHwon

0

您可以通过合并cmdkey.exe和自动的mstsc.exe启动RDP连接:通过执行

商店的凭据的服务器:

cmdkey.exe /generic:servername /user:username /pass:pass 

mstsc.exe /v:servername 

之后,您可以通过自动登录到服务器

您也可以通过在mstsc的连接设置中选择“保存”将您的自定义RDP设置保存到rdp文件。然后,您可以启动由连接:

mstsc.exe myfile.rdp 

现在的问题是,究竟你做的就是将文件复制到远程计算机。如果您能够通过\ tsclient共享获取文件,那么您可能会在连接到RDP服务器后尝试使用该选项执行程序,以获得幸运。为此,您可以将以下两行添加到您的RDP文件:

remoteapplicationname:s:C:\windows\system32\cmd.exe 
    remoteapplicationcmdline:s:C:\windows\system32\cmd.exe /C deployMyStuff.bat 

另一种选择是在连接后,找出RDP会话ID,并尝试使用PSEXEC从Sysinternals的远程机器上执行批处理过程。看到这里获取活动会话的例子:

Selenium hover action with IE doesn't work if RDP never connected to Jenkins slaves

那么你也许可以在活动会话从本地PC使用PSEXEC从Sysinternals的启动过程:

psexec \\servername -i %SESSION% -d CMD.exe /C mydeployment.bat