попробуйте добавить -accepteula к своим аргументам в psexec
ытываю странную проблему при попытке запустить инструмент командной строки .NET удаленно, используя PsExec.
При запуске PsExec из командной строки, он запускается и завершается нормально.
При запуске его из консольного приложения (создание процесса, запуск PsExec.exe с необходимыми аргументами) - он работает нормально.
При запуске из нашего собственного пользовательского инструмента, который используется для запуска различных задач, он либо истекает, либо не завершается успешно.
Вот код, который я использую:
Process p = new Process();
p.StartInfo.FileName = @"C:\PsExec.exe";
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = true;
string arg = "-snapshot -display C:\*.msi -s";
p.StartInfo.Arguments = @"\\10.161.203.106 -u user -p pwd -cf C:\FVT.exe " + arg;
Logger.Info(this, "Starting process");
p.Start();
var ended = p.WaitForExit(60 * 1000);
if (!ended)
{
throw new Exception("Process timed out.");
}
Logger.Info(this, "Process ended");
using (StreamReader sr = p.StandardOutput)
{
string buffer = sr.ReadToEnd();
Logger.Info(this, buffer);
}
Этот код работает нормально из строки cmd или из отдельного приложения!
Я понятия не имею, что еще может быть не так здесь.
Наш собственный инструмент порождает новый поток и запускает в нем этот код.
Обновить:
командная строка + аргументы в окне командной строки - работает. То же cmd + args, запускается как Process с RedirectOutput - останавливается и возвращается по таймауту.
Может ли это быть ошибкой в .NET? (это происходит для других программ, командных файлов и т. д.).