У меня проблема с удаленным запуском процесса с помощью psexec.exe.Мое решение выглядит так, у меня на сервере есть сценарий cmd, который запускает мое консольное приложение.Задача приложения - запустить тестовый запуск с помощью vstest.console.exe с помощью следующего кода:
var config = LoadConfigFromFile<DeploymentStorage>(configFile);
var currentDateTime = DateTime.Now;
var resultFileName = String.Format("testresults{0}{1}{2}{3}{4}{5}.trx",
currentDateTime.Year, currentDateTime.Month, currentDateTime.Day, currentDateTime.Hour, currentDateTime.Minute, currentDateTime.Second);
ProcessStartInfo processInfo =
new ProcessStartInfo(config.TestSettings.First(x => x.Key == "MSTestLocation").Value,
"\"" + config.TestSettings.First(x => x.Key == "TestContainer").Value + "\" /logger:trx;LogFileName=\"" +
config.TestSettings.First(x => x.Key == "TestResultLocation").Value + resultFileName + "\"");
processInfo.CreateNoWindow = true;
processInfo.UseShellExecute = false;
processInfo.RedirectStandardError = true;
processInfo.RedirectStandardOutput = true;
var process = Process.Start(processInfo);
process.OutputDataReceived += (object sender, DataReceivedEventArgs e) =>
Console.WriteLine("output>>" + e.Data);
process.BeginOutputReadLine();
process.ErrorDataReceived += (object sender, DataReceivedEventArgs e) =>
Console.WriteLine("error>>" + e.Data);
process.BeginErrorReadLine();
process.WaitForExit();
var exitCode = process.ExitCode;
Console.WriteLine("ExitCode: {0}", exitCode);
process.Close();
Если я запускаю этот скрипт локально на сервере, все работает нормально, запускается тестовый запуск.Но если я запускаю этот скрипт удаленно через мой локальный компьютер с помощью psexec.exe, я получаю следующую ошибку:
Не удалось поставить в очередь тестовый запуск '[Servername] 2018-04-24 15:17: 20 ': Невозможно запустить процесс агента.
Это не проблема psexec.exe, с помощью этого инструмента я могу запускать другие программы и сценарии cmd, я могу напрямую запустить vstest.console.exe с ним тоже, но мне нужно запустить тесты через мое консольное приложение.
Почему psexec.exe не запускает мое приложение?Я что-то упускаю при настройке процесса?
РЕДАКТИРОВАТЬ: я запускаю psexec.exe с помощью следующей команды на моем локальном компьютере:
C:\Programs\PSTools\psexec.exe \\my-server -h C:\TestApp\MyTestTool.exe TEST C:\TestApp\base.config.xml
Где TEST и путь к base.config.xml - это аргументы, передаваемые консольному приложению.
EDIT2: Кажется, я неправильно истолковал свою проблему.Я запускаю команду psexec.exe из командной строки на моем локальном компьютере.Он должен запустить мое консольное приложение под названием TestApp на сервере.Это консольное приложение на сервере должно запускать vstest.console.exe с помощью приведенного выше кода, а не psexec.exe, и оно не может этого сделать.Надеюсь, что это немного понятнее.
EDIT3: Хорошо, теперь я знаю, в чем заключается проблема, я не могу запускать тесты удаленно, если мой тестовый контейнер представляет собой файл * .orderedtest.Если я попытаюсь запустить тест, установив dll в качестве тестового контейнера, все будет нормально.