在远程服务器上运行脚本文件

时间:2015-06-25 17:09:34

标签: c# .net batch-file scripting remote-access

我的任务是自动化内部流程。 此过程涉及首先登录远程服务器(A)。 从服务器A,用户将连接到远程服务器(B)。

在服务器B上进行身份验证后,用户需要执行三项主要任务:

  1. 更改本地目录中的文件名。
  2. 打开命令提示符并执行" iisreset"
  3. 打开Internet Explorer以确保重新建立与IIS的连接。
  4. 我在CodeProject上的帖子中使用了一些示例代码,以便建立所有远程桌面连接,并且它可以毫无问题地运行。 代码使用ActiveX MSTSC Library

    我的问题在于上面列出的步骤。 连接到服务器B后,如何实际执行这些操作。 现在,我们有一个执行这些步骤的内部脚本。 要执行该脚本,用户必须登录到服务器B并手动运行脚本。

    如果能够建立连接并以实际方式执行脚本,这将是一个解决方案。如果由于某种原因这是不可能的,我需要以实用的方式执行这三个步骤作为解决方案。

    感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

您可以使用Powershell New-PSSession

摘自Microsoft Site:

  

New-PSSession cmdlet可创建Windows PowerShell会话   (PSSession)在本地或远程计算机上。当你创建一个   PSSession,Windows PowerShell建立持久连接   远程计算机。

将以下内容保存到PS1文件中:

Write-Output "Please supply your credential for <insert server name>"
$cred = Get-Credential -Message "Enter credential for <insert server name>"

Try
{
    $s1 = new-pssession -computername <fully qualified domain name (FQDN)> q -credential $cred -Authentication Credssp
}
Catch [system.exception]
{
    "Your account doesn't have access to <insert server name>"
    "Not sure what permission are really require on the server"
    "When I have a chance, need to test with the other developers"
}

# If you wanted to set a path you could do this
$env:Path = $env:Path + ";C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE"

# Create the command we want to execute on the remote server
# This block can contain anything you do at command prompt
$block = {
dir
cd "\Foo"
.\Bar.bat
}

if ($s1)
{
    Invoke-Command $block -session $s1
    remove-pssession $s1
}

Start-Sleep 5

一旦有了脚本,就可以按照PowerShell Class中的示例对C#应用程序进行建模。

答案 1 :(得分:0)

您可以使用psexec在另一台计算机上运行脚本。它配备了sysinternals套件。
命令似乎如下:
psexec \\ serverB&lt;脚本的本地路径&gt;