Выполнить команду на удаленном ПК с помощью PsExec - c #

Я пытаюсь настроить удаленный компьютер в качестве узла Selenium, используя консольное приложение, которое будет работать на ПК-концентраторе / сервере.

Когда программа запускается в режиме отладки, я получаю следующий текст в "errorMessage"

The handle is invalid.
Connecting to 200.200.20.200:5555...
Couldn't access 200.200.20.200:5555
Connecting to 200.200.20.200:5555...

Сервер имеет PsExec по адресу: D: \ PSTools \ PsExec.exe
IP-адрес сервера: 100.100.10.100
Удаленный IP-адрес: 200.200.20.200
Файл jar на удаленном ПК сохраняется в: D: \ Selenium \ селен-сервер-standalone.jar

Команда для запуска на удаленном компьютере:

D:\Selenium>java -jar selenium-server-standalone.jar -role node -hub http://100.100.10.100/grid/register  

что мне здесь не хватает

private static void StartSeleniumNode()
        {
            Process p = new Process();
            p.StartInfo.UseShellExecute = false;
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.RedirectStandardError = true;
            p.StartInfo.RedirectStandardInput = true;
            p.StartInfo.FileName = @"D:\PSTools\PsExec.exe";
            p.StartInfo.Arguments = @"\\200.200.20.200:5555 -u xyz -p abc123 -i -w D:\Selenium java -jar selenium-server-standalone.jar -role node -hub http://100.100.10.100:4444/grid/register";
            p.Start();

            string output = p.StandardOutput.ReadToEnd();
            string errormessage = p.StandardError.ReadToEnd();

            p.WaitForExit();
        }

person Qwerty    schedule 19.08.2015    source источник
comment
Когда я вручную запускаю команды для настройки концентратора и узлов на соответствующих компьютерах, он работает.   -  person Qwerty    schedule 19.08.2015


Ответы (1)


Вы должны уметь разбираться в этом сами

Вы дали нам: p.StartInfo.Arguments = @"\\200.200.20.200"; \\what should go here

Что ж, у вас есть команда, которую вы хотите запустить

java -jar selenium-server-standalone.jar -role node -hub http://100.100.10.100/grid/register

Вы знаете компьютер, на котором хотите его запустить ... У вас есть psexec, чтобы получить параметры того, что вам нужно послать.

Итак, это будет примерно так

D:\PSTools\PsExec.exe psexec \\remotepc -i -w D:\Selenium java -jar selenium-server-standalone.jar -role node -hub http://100.100.10.100/grid/register

Попробуйте запустить это из командной строки, и когда она заработает. Вы готовы его закодировать (давайте просто предположим, что это работает.)

Тогда ваш код будет

p.StartInfo.FileName = @"D:\PSTools\PsExec.exe";
p.StartInfo.Arguments = @"\\remotepc -i -w D:\Selenium java -jar selenium-server-standalone.jar -role node -hub http://100.100.10.100/grid/register"; 
person BugFinder    schedule 19.08.2015
comment
Для полноты картины использование PsExec хорошо документировано на странице загрузки. в Microsoft - person KeyNone; 19.08.2015
comment
Да, это так .. хотя psexec запрещен там, где я работаю, поэтому я сделал свой собственный: D из C #, конечно - person BugFinder; 19.08.2015
comment
Только что попробовал, и «errorMessage» сообщает «Не удалось получить доступ к 200.200.20.200 :. Обязательно ли передавать учетные данные удаленного компьютера - person Qwerty; 19.08.2015
comment
Вам нужно будет проверить другой конец, как он пытался войти в систему, если он пытался как гость ... тогда вам может потребоваться добавить учетные данные, обычно, конечно, он запускается как текущий пользователь ... если у него нет прав, но потом вы сказали, что у вас есть рабочая командная строка .. - person BugFinder; 19.08.2015
comment
Я пробовал с учетными данными. Сообщение об ошибке по-прежнему сообщает, что не удалось получить доступ - person Qwerty; 19.08.2015
comment
Я не могу тебе с этим помочь .. мой сработал .. Что ты видишь на другом конце - person BugFinder; 19.08.2015
comment
Не могли бы вы рассказать мне, что и как я должен проверять на другом конце - person Qwerty; 19.08.2015
comment
Что говорит удаленный сервер, когда ваш пользователь пытается войти в систему - в конце концов, это то, что говорит нет - person BugFinder; 19.08.2015
comment
Проблема, похоже, связана с порядком параметров в аргументах, и теперь я могу подключиться вручную. Но, пожалуйста, скажите мне, необходимо ли, чтобы на узле работал psexec? - person Qwerty; 19.08.2015
comment
Честно говоря, вы не имеете для меня большого смысла - если у вас есть рабочая командная строка, эта командная строка должна быть всем, что вам нужно вставить. - person BugFinder; 19.08.2015