2015-07-27 4 views
1

Мне поручено автоматизировать внутренний процесс. Этот процесс включает сначала вход на удаленный сервер (A). С сервера A пользователь подключается к удаленному серверу (B).Запуск пакетного сценария на удаленном сервере

После аутентификации на сервере B, то C# приложение должно запустить пакетный файл

Я использовал некоторые примеры кода, образуют пост на CodeProject сделать все удаленные соединения через какой-то графический интерфейс и работает без проблем , В коде используется ActiveX MSTSC Library.

Затем я подать в суд на этот блок кода, в надежде начать Batch File:

private void button3_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      //PowerShell ps = PowerShell.Create(); 
      //ps.AddCommand("Start-Process"); 
      //ps.AddArgument("/c c:\\Recycle.bat"); 
      //ps.Invoke(); 

      Process p = new Process(); 
      p.StartInfo.FileName = "C://Recycle.bat"; 
      p.StartInfo.CreateNoWindow = false; 
      p.Start(); 
     } 

     catch(Exception exception) 
     { 
      Console.WriteLine(exception.Message); 
     } 
    } 

Я попытался с помощью класса PowerShell, а также объекты System.Diagnostics.Process. Объект PS yeilds «файл не найден», где объекты процесса выполняют сценарий «Recycle.bat» на моем локальном компьютере, а не удаленном сервере.

Как вы присоедините объект Process к удаленному серверу, а не к локальному компьютеру?

Благодарим за помощь.

+0

Любая причина, по которой вы не можете просто использовать winrs для запуска удаленного командного файла? EG 'winrs -r: (имя удаленного sserver host) c: \ recycle.bat' – Tim

+0

Это приложение разрабатывается как простой графический интерфейс, который будет использоваться внутренней командой. В конце концов, приложение должно иметь контрольный список серверов, где пользователи отключают серверы на «переработку» и запускают клики. –

+1

Ах. Итак, если это элемент на основе gui в C#, то посмотрите этот поток: http://stackoverflow.com/questions/428276/how-to-execute-a-command-in-a-remote-computer, но если вы хотите, чтобы он работал через powershell, а затем попробуйте эту ссылку: http://stackoverflow.com/questions/9535515/powershell-execute-remote-exe-with-command-line-arguments-on-remote-computer – Tim

ответ

1

Существует нечто, называемое WMI. Попробуйте использовать следующий URL-адрес: http://www.codeproject.com/Articles/18146/How-To-Almost-Everything-In-WMI-via-C-Part-Proce

+0

Да, WMI тоже будет работать, но код для создания объекта оболочки для запуска winrs (http://stackoverflow.com/questions/1469764/run-command-prompt-commands) намного легче (3 строки), чем код для запуска удаленного процесса через WMI (~ 20?). Тем не менее, может быть более эстетично использовать WMI, так как у вас не будет окна черных досок, появляющихся ненадолго. – Tim

+1

Я согласен с тобой. Но он упоминался как GUI, поэтому я предложил этот вариант –

+0

Кажется, что ссылка, которую вы предоставили, устарела. Можете ли вы привести еще один пример? –

Смежные вопросы