@Only4You

Почему pypsexec не выводит приложение на экран?

Необходимо запустить приложение на удаленном ПК с помощью psexec.
Пробовал через subprocess
def tray_pcard_kpp4_reboot(self):

    print('КПП ребут)
    command = f'C:\PsTools\psexec.exe -i 1 -s \\192.168.11.18 -u user -p password calc.exe'
    return subprocess.call(command, stdout=subprocess.DEVNULL)

В консоле пайчарм появляются крякозябры и внизу текст "psexec could not start \192.168.11.18 on Arm(имя хоста на котором пайчарм). Хотя если запускать из командной строки то все работает
Тогда установил Pypsexec
def tray_pcard_kpp1_reboot(self):

    print('KNN1 ребут')
    c = Client( '192.168.11.18', username='user', password='password')
    c.connect()
    c.create_service()
    c.run_executable (executable: "cmd.exe", arguments=r"/c start calc.exe", interactive=True)
    c.remove_service()
    c.disconnect()

Выполнение этого кода запускает процесс на удаленной машине, однако на экране калькулятор, блокнот и т.п. не появляются.
В psexec это решалось добавлением -i 1, а в pypsexec ничего не получается.
Кто знает как решить проблему через psexec или pypsexec просьба откликнуться
  • Вопрос задан
  • 63 просмотра
Пригласить эксперта
Ответы на вопрос 1
@dim5x
ЗИ, ИБ. Помогли? Поблагодарите. Отметьте ответом.
1. Используйте r перед ф-строкой во избежание нескольких invalid escape sequence:
command = rf'C:\PsTools\psexec.exe -i 1 -s \\192.168.11.18 -u user -p password calc.exe'

У меня код с subprocess отрабатывает корректно:
import subprocess


def f():
    command = rf'C:\Portable\Sysinternal\PsExec.exe -i 1 -s \\192.168.0.3 -u user -p password calc.exe'
    return subprocess.call(command, stdout=subprocess.DEVNULL)


2. Вариант с pypsexec у меня отрабатывает некорректно - GUI запускается, но с артефактами.
Помимо interactive=True, надо указать номер сессии (можно узнать через cmd -> query user), например: interactive_session=1. Это аналог -i 1 в psexec.

c.run_executable (executable: "cmd.exe", arguments=r"/c start calc.exe", interactive=True, interactive_session=1)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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