Для удаленного выполнения команд в Windows есть отличная штука -
PsExec. Принципиально похожа на линуксовый SSH. Эта утилита работает со всеми версиями Windows, начиная с XP (XP, 2003, Vista, 2008, 7,8, 2012).
Итак, на локальной машине скачиваем утилиту (точнее, набор утилит), с сайта
Microsoft Technet и распаковываем, например, в папку C:\PSTools.
Далее, открываем консоль путем
[Win+R] или
Пуск - Выполнить - cmd.
Переходим в распакованную папку:
cd C:\PSTools
Теперь мы можем выполнять команды на удаленной Windows машине, запуская psecex в таком формате:
psexec \\remote_name_or_ip -u user -p password command
На удаленной машине должны быть запущены службы
Server и
Workstation.
Вот так - из-коробки - работает только на Windows 2003/XP. В версиях начиная с Vista из-за другого механизма доступа (UAC и т. д.), необходимо немного "пошаманить".
На удаленной машине под управлением Windows Vista или поздней открываем Редактор Реестра (
Start - Run - regedit) и создаём ключ реестра
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\LocalAccountTokenFilterPolicy типа
DWORD и со значением
1.
Всё, теперь можно выполнять команды и на удаленной Vista+ системе, выполняя следующую команду:
psexec \\remote_name_or_ip -u user -p password -h command
Флаг
-h нужен, чтобы запустить команду от имени Администратора.
Если имя пользователя и праоль совпадают с локальными - их можно не указывать, так же как и пароль - он будет запрошен.
А для того, чтобы получить шелл на удаленной машине, выполняем команду:
psexec \\remote_name_or_ip -u user -p password -h cmd
Ссылки:
- http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx
- http://forum.sysinternals.com/faq-common-pstools-issues_topic15920.html
- http://stackoverflow.com/questions/828432/psexec-access-denied-errors