【问题标题】:How to execute a bat file on remote server?如何在远程服务器上执行 bat 文件?
【发布时间】:2012-10-01 06:37:07
【问题描述】:

我有两台物理机。第一台机器想在第二台机器上执行一个 bat 文件。我在第二台服务器上创建了一个共享位置,并尝试从第一台机器上运行它,但它不起作用。 bat文件可以在本机正常运行。

这是 bat 文件中的代码示例。创建文件只是一个蝙蝠。

echo. 2>EmptyFile.txt

这是我用来执行bat文件的代码。

private static void ExecuteBatFile()
{
    System.Diagnostics.Process proc = new System.Diagnostics.Process();
    System.Security.SecureString ssPassword = new System.Security.SecureString();

    proc.StartInfo.UseShellExecute = false;
    proc.StartInfo.FileName = @"\\my_remote_server\my_bat.bat";
    proc.StartInfo.Domain = "my_domain";
    proc.StartInfo.UserName = "my_username";

    Console.Write("Enter your password: ");
    string password = Console.ReadLine();

    for (int x = 0; x < password.Length; x++)
    {
        ssPassword.AppendChar(password[x]);
    }

    proc.StartInfo.Password = ssPassword;
    proc.Start();
}

我想知道如何在远程服务器上运行 bat 文件?

【问题讨论】:

标签: c# batch-file


【解决方案1】:

您可以使用PsExec 在远程机器上执行命令。我用它来执行批处理文件并将参数传递给它们。

【讨论】:

  • 我们需要在哪里安装 psexec ?在物理上存在文件的服务器上还是在我们运行代码以发送命令的服务器上?
  • "只需将 PsExec 复制到您的可执行路径即可。" -> 运行代码的位置
【解决方案2】:
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "psexec \\my_remote_server -u my_username -p " & password & " my_bat.bat"

或者,如果您需要指定域:

Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "psexec \\my_remote_server -u my_domain\my_username -p " & password & " my_bat.bat"

psexec知道如何在远程计算机上执行程序的唯一方法。

【讨论】:

  • 我们需要在哪里安装 psexec ?在物理上存在文件的服务器上还是在我们运行代码以发送命令的服务器上?
【解决方案3】:

这可以通过命令提示符或 bat 文件轻松完成

wmic /node:MachineName> process call create "cmd.exe c:\Test\Test.bat"

帮助类型:

wmic /?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-15
    • 2020-09-15
    • 1970-01-01
    • 2021-02-08
    • 1970-01-01
    相关资源
    最近更新 更多