1

我必须将deploy我的.NET 软件放在几个RDP Servers(MS Srv)上。由于安全原因,没有可用的 Networkshare。

是否可以使用script(powershell)或类似的东西来自动化这个过程?

此刻我在

  • 创建部署包(单击一次发布通过VS2012
  • 开始RDP
  • 将应用程序复制到远程文件系统
  • 对每台服务器重复此步骤

我想以某种方式使这个过程更简单......

直到现在我才发现这个线程,我不知道这是否对我有帮助: 使用脚本通过 RDP 将文件复制到远程服务器 有人对这个主题有过经验吗?

4

2 回答 2

2

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

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

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

于 2013-04-18T01:49:07.920 回答
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,并尝试使用 sysinternals 中的 psexec 在远程计算机上执行批处理。在此处查看获取活动会话的示例:

如果 RDP 从未连接到 Jenkins 从站,则使用 IE 的 Selenium 悬停操作不起作用

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

    psexec \\servername -i %SESSION% -d CMD.exe /C mydeployment.bat
于 2017-08-29T15:08:36.580 回答