.net 通过RDP脚本自动部署

.net 通过RDP脚本自动部署,.net,deployment,rdp,.net,Deployment,Rdp,我必须在几个RDP服务器上部署我的.NET软件(MS Srv)。由于安全原因,没有可用的网络共享 是否可以使用脚本(powershell)或类似的工具来实现这一过程的自动化 现在我是 创建部署包(通过VS2012单击一次发布) 启动RDP 将应用程序复制到远程文件系统 对每台服务器重复此步骤 我想让这个过程更简单一些 我直到现在才找到这条线,我不知道这是否对我有帮助: 有人对这个主题有经验吗?RDP文件传输通过一个相当复杂的隧道过程工作,在这个过程中,您的计算机最终作为tsclient暴露给

我必须
在几个
RDP服务器上部署
我的.NET软件
(MS Srv)。由于安全原因,没有可用的网络共享

是否可以使用
脚本
(powershell)或类似的工具来实现这一过程的自动化

现在我是

  • 创建部署包(通过
    VS2012
    单击一次发布)
  • 启动
    RDP
  • 将应用程序复制到远程文件系统
  • 对每台服务器重复此步骤
我想让这个过程更简单一些

我直到现在才找到这条线,我不知道这是否对我有帮助:
有人对这个主题有经验吗?

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

你考虑过自动化工具吗?Inedo可以轻松地处理此文件传输(它比RDP更安全/健壮)。将其设置为直接从源代码管理构建ClickOnce项目是非常简单的。听上去,免费版的BuildMaster完全可以满足您的需求


(免责声明:我为Inedo工作)

您可以通过组合cmdkey.exe和mstsc.exe自动启动RDP连接:

通过执行以下操作存储服务器的凭据:

cmdkey.exe /generic:servername /user:username /pass:pass
之后,您可以通过以下方式自动登录到服务器:

mstsc.exe /v:servername
您还可以通过在mstsc的连接设置中选择“保存”,将自定义RDP设置保存到RDP文件中。然后,您可以通过以下方式启动连接:

mstsc.exe myfile.rdp
现在的问题是,要将文件发送到远程计算机,您到底要做什么。如果您能够通过\t客户端共享获取文件,那么您可能会幸运地在连接到RDP服务器后尝试使用该选项执行程序。为此,您可以在rdp文件中添加以下两行:

    remoteapplicationname:s:C:\windows\system32\cmd.exe
    remoteapplicationcmdline:s:C:\windows\system32\cmd.exe /C deployMyStuff.bat
另一个选项是在连接后找出RDP会话ID,并尝试使用sysinternals中的psexec在远程计算机上执行批处理。请参见此处获取活动会话的示例:

然后,您可以使用sysinternals中的psexec从本地PC启动活动会话中的进程:

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

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