С# запустить команду на Windows 2008 64bit удаленно

Я новичок в программировании на С#, пожалуйста, помогите мне со следующим, заранее спасибо .. !!!

Я пытаюсь сделать следующее:

Я разрабатываю небольшое приложение С# для выполнения пакетного файла на удаленных серверах, ниже приведен мой код, большинство моих серверов - это Windows 2008 64bit. Если я RDP на сервер, я могу выполнить пакетный файл без каких-либо ошибок, но когда я пытаюсь сделать это через следующий код, он не работает, исключение не выдается, но нет результатов.

мой пакетный файл содержит следующую команду:

@ECHO off 
echo Running Remote Commands 
date/t 
time /t 
COPY "\\xt0022\I$\abc\RemoteProcess\testcopy.bat" D:\ab\
date/t 
time /t 

-

try
{
    string remotemachine = "Server1";

    object[] theProcessToRun = { "D:\\ab\\test2.bat" };
    ConnectionOptions theConnection = new ConnectionOptions();
    theConnection.Impersonation = ImpersonationLevel.Impersonate;
    theConnection.EnablePrivileges = true;
    ManagementScope theScope = new ManagementScope("\\\\" + remoteMachine + "\\root\\cimv2", theConnection);
    ManagementClass theClass = new ManagementClass(theScope, new ManagementPath("Win32_Process"), new ObjectGetOptions());
    theClass.InvokeMethod("Create", theProcessToRun);

}
catch (Exception ex)
{

}

Если я отлаживаю код, он показывает «Вывод = время оценки функции истекло».

Должен ли я запускать это с помощью RUNAS ..? если да .. может ли кто-нибудь помочь мне с этим кодом или методом ..?

Спасибо вам всем..!


person user1265448    schedule 09.05.2012    source источник


Ответы (1)


Вы смотрели в ProcessStartInfo?

ProcessStartInfo startInfo = new ProcessStartInfo("PsExec.exe");
startInfo.Arguments = @"\\<computername -u <username> -p <password> -i c:\\test.bat";
Process.Start(startInfo);

Вот статья на CodeProject.com, которая создает удаленный процесс с использованием WMI, как и вы. Доступен полный исходный код.

http://www.codeproject.com/Articles/31113/Create-a-Remote-Process-using-WMI-in-C

Это может быть глупый вопрос, но какой у вас установлен тайм-аут? Если он слишком мал, причина может быть в этом.

person Chris Gessler    schedule 09.05.2012
comment
Да, я пробовал тот же код, вот еще один способ взглянуть на эту проблему. Если я запускаю пакетный файл, который содержит локальный путь, он работает нормально, но если у меня есть удаленное расположение файла для копирования, он терпит неудачу :-(, также TimeOut не установлен, я использую то, что по умолчанию. do Я должен явно указать большую длину тайм-аута..? - person user1265448; 10.05.2012
comment
Я имею в виду, что если я делаю это в пакетном файле, он работает нормально: КОПИРОВАТЬ C:\temp\abc.txt D:\ab\ - person user1265448; 10.05.2012
comment
Таким образом, истекает время получения файла из удаленного места. Я не сталкивался с этой проблемой с помощью удаленной команды, извините. - person Chris Gessler; 10.05.2012