Как я могу свернуть все окна на удаленном компьютере с помощью Python?

#python #python-2.7 #powershell #ssh

#python #python-2.7 #powershell #ssh

Вопрос:

Я пытался использовать PowerShell на удаленном компьютере с Windows 10, используя SSH, чтобы свернуть все окна. Это то, что я пробовал:

 hostname = MYHOST
username = MYUSER
password = MYPASSWORD
ssh = paramiko.SSHClient()
ssh.connect(hostname=hostname, username=username, password=password)

command = 'powershell (New-Object -ComObject "Shell.Application").MinimizeAll()'
ssh_stdin, ssh_stdout, ssh_stderr = ssh.exec_command(command, timeout=30)
  

Однако это ничего не возвращает и не выполняет задачу на удаленном компьютере.

Эта команда работает на моем компьютере, когда я запускаю ее с помощью подпроцесса.Popen

Кто-нибудь может помочь? Я также открыт для других предложений, не обязательно PowerShell, я просто подумал, что это должен быть лучший вариант.

Редактировать: если это поможет, я также попытался обойти политику выполнения, на случай, если это помешает мне работать с удаленного компьютера, поэтому я сделал это: (опять же, локальная работа, но удаленная, не работает)

 ssh_client.execute_command('powershell -ExecutionPolicy Bypass -command "amp; { $x = New-Object -ComObject Shell.Application; $x.minimizeall() }"')
  

Комментарии:

1. То, с чем я сталкивался раньше, и, возможно, стоит изучить, заключается в том, что ssh с Windows не предоставляет вам доступ к рабочему столу, поэтому команды, которые работают в вашей локальной системе, не будут работать через ssh. Например, вы не можете делать скриншоты или создавать события клавиатуры. Возможно, это тот случай.

2. Спасибо. Я также думал о запуске скрипта с удаленного, таким образом, скрипт будет локальным и сможет выполнить эту задачу. Я мог бы загрузить скрипт на удаленный компьютер через ssh, когда мне это нужно. Но я все же предпочитаю избегать использования этого метода сценария.

3. Вы запускаете скрипт от имени пользователя, который вошел в систему?

4. @doug-maurer, имя пользователя моего компьютера и имя пользователя удаленного компьютера разные, если вы об этом спрашивали. Я могу запускать другие простые команды PowerShell на удаленном компьютере.

5. Выполнение команд на удаленном компьютере и взаимодействие с сеансом интерактивного входа в систему — это две совершенно разные вещи. Если вы хотите открыть что-либо в этом сеансе, вам нужно будет работать от имени этого пользователя.