@hax
junior developer

Как исправить проблему с запуском PsExec в C#?

Необходимо через утилиту PsExec выполнить удаленную установку пакета MSI. Сделать всё это нужно через консольное приложение C#. Вот моё решение:

src
string psExecPath = @"C:\Program Files\Utility\64\PsExec.exe";
            string arg = String.Join(" ", args);

            var process = new Process()
            {
                StartInfo = new ProcessStartInfo(psExecPath, arg)
                {
                    RedirectStandardError = true,
                    UseShellExecute = false,
                    WindowStyle = ProcessWindowStyle.Hidden,
                    CreateNoWindow = true
                }
            };

            Console.WriteLine("Starting process...");

            process.Start();
            process.WaitForExit(60000);

            if (!process.HasExited)
            {
                process.Kill();
                Console.WriteLine("Wait for exit: Time out");
                return;
            }

            if (process.ExitCode != 0)
                Console.WriteLine($"Error occurred during the execution PsExec. ErrorCode {process.ExitCode}");



Строка args содержит следующие агрументы: \\MACHINE-64 -u "INT\Administrator" -p "qwerty" msiexec /i "C:\Users\MyUser\Desktop\temp\Installer.msi" /qn

Если выполнить установку через PsExec в обычной cmd с данными аргументами, то установочник успешно срабатывает и устанавливается на удаленной машине. Но если запустить PsExec с аргументами через моё консольное приложение, то PsExec просто зависает в процессах и ничего не происходит.
  • Вопрос задан
  • 386 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы