Ну что ж, пошли олл-ин: назначив все мои 72 очка в качестве награды за этот вопрос!

Как запустить программу командной строки на удаленных компьютерах Windows без установки дополнительного программного обеспечения (он же ssh). Все рекомендации по web/stackoverflow не соответствуют следующим основным требованиям:

  1. Удаленная программа должна иметь доступ к сетевому ресурсу (чтение / запись)!
  2. Вывод программы должен быть захвачен (обратно к управляющему компьютеру)
  3. Автоматизированный для запуска из скрипта (например, Python)

Я посмотрел на следующее:

  1. WMI - может запустить программу, но не может получить доступ к общим сетевым ресурсам, а вывод не виден (метод огня и молитвы?)
  2. WinRM - предположительно может получить доступ к общим сетевым ресурсам, но настройка более сложна (похоже, не требуются самозаверяющие сертификаты и вводимый пароль, что не удается в C)
  3. PsExec - не может запустить исполняемый файл из сетевого пути

Окружение: все Win 7, могут запускаться от имени локального администратора

3 ответа3

1

Я бы порекомендовал PowerShell Remoting. Но ответь на вопрос как? очень сильно зависит от среды (домен / рабочая группа) и ваших прав (от сервера / внутри домена).

Это одна команда в среде AD:

Set-ADComputer -TrustedForDelegation $true -Identity <your target server>

И позже:

Invoke-Command -ComputerName <target server> -ScriptBlock { your command }

... но это не сработает в среде рабочей группы, поэтому я думаю, вам нужно быть более конкретным здесь.

0

Инструмент psexec , изначально созданный Sysinternals, но теперь являющийся частью Microsoft Technet, должен делать то, что вам нужно.

С его помощью вы можете выполнить любую команду на удаленном компьютере Windows, включая копирование любого исполняемого файла, его запуск и возврат результатов. Вам не нужно ничего устанавливать на удаленном компьютере.

Конечно, вы должны иметь административные или эквивалентные права на целевой машине для выполнения выполнения. По сути, если вы не можете использовать удаленный рабочий стол или войти в систему, вы не сможете его использовать. Это довольно очевидно.

Вот страница продукта: http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx

В Интернете вы можете найти множество учебных пособий и руководств по их использованию.


Я не понимаю, что вы подразумеваете под "он не может получить доступ к сети".

Сделайте следующее:

  1. Напишите сценарий, командный файл или исполняемый файл, чтобы, если вы физически скопировали его на целевой компьютер и дважды щелкнули по нему, он сделал все, что вам нужно (подключился к удаленному общему ресурсу и считал / записал данные в него). Как это сделать, выходит за рамки этого вопроса и на самом деле зависит от технологии, которую вы собираетесь использовать для написания сценария.
  2. Используйте psexec чтобы запустить его на другом целевом компьютере.

Насколько я понимаю, вы в настоящий момент не выполняете шаг 1, но текущий вопрос касается шага 2.

0

Вы пытались сопоставить сетевой ресурс с буквой диска на удаленном ПК? После этого PSExec сможет видеть файлы в этой папке как локальные.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .