Удаленно запустить программу на другом компьютере

Удаленно запустить программу на другом компьютере

Возникла задача выполнить кое-какую операцию с помощью командной строки на другом компьютере, само собой идти к пользователю запускать командную строку и вбивать команды- не наш метод, нам надо не вставая с кресла запустить командную строку удаленного компьютера и выполнить необходимые действия в командной строке. Конечно, подобное действие можно выполнить с помощью программ удаленного подключения, но это не всегда удобно и требует наличия подобной программы у вас и у пользователя (клиент- сервер). Процедуру по подключению к командной строки другого компьютера, можно выполнить значительно просто, с помощью команды PSEXEC.

PsExec — это утилита командной строки, с возможность вызывать в интерактивном режиме интерфейс командной строки в удаленных системах Windows и удаленно запускать различные команды.

Эта утилита ставиться на только на компьютер администратора. Для установки необходимо ее скачать, вот ссылка на официальный сайт Microsoft . После скачивания архива его необходимо разархивировать, в разархивированной папке найти файл PsExec.exe. Нажмите на нем два раза, появиться окно с лицензионным соглашением, нажимаем "Agree".

На этом установка PSEXEC можно считать оконченной.

Разберем синтаксис команды:

psexec [\компьютер[,компьютер2[. ] | @файл][-u пользователь [-p пароль]][-n s][-l][-s|-e][-x][-i [сеанс]][-c [-f|-v]][-w каталог][-d][- ][-a n,n. ] программа [аргументы]

компьютер Указывает программе PsExec, что нужно запустить приложение на заданном компьютере или компьютерах. Если имя компьютера не указано, то программа PsExec запустит приложение в локальной системе, если же вместо имени компьютера задан символ «звездочка» (\*), то программа PsExec запустит приложение на всех компьютерах текущего домена.

@файл Указывает программе PsExec, что нужно запустить приложение на всех компьютерах, перечисленных в заданном текстовом файле.

-a Процессоры, на которых можно запустить приложение, отделяются запятыми, при этом процессоры нумеруются, начиная с 1. Например, чтобы запустить приложение на процессорах втором и четвертом, введите «-a 2,4»

-c Указанная программа копируется в удаленную систему для выполнения. Если этот параметр не задан, то приложение должно находиться в системной папке удаленной системы.

-d Указывает, что не нужно ждать завершения приложения. Этот параметр следует использовать только при запуске неинтерактивных приложений.

-e Указанный профиль учетной записи не загружается.

-f Указанная программа копируется в удаленную систему, даже если такой файл в удаленной системе уже есть.

-i Запускаемая программа получает доступ к рабочему столу указанного сеанса в удаленной системе. Если сеанс не задан, то процесс выполняется в консольном сеансе.

-l При запуске процесса пользователю предоставляются ограниченные права (права группы администраторов отменяются, и пользователю предоставляются только права, назначенные группе «пользователи»). В ОС Windows Vista процесс запускается с низким уровнем благонадежности.

Читайте также:  Полный вперед как железные дороги создали великобританию

-n Позволяет задать задержку подключения к удаленным компьютерам (в секундах).

-p Позволяет указать необязательный пароль для имени пользователя. Если этот параметр опущен, то будет выдан запрос на ввод пароля, при этом пароль не будет отображаться на экране.

-s Удаленный процесс запускается из системной учетной записи.

-u Позволяет указать необязательное имя пользователя для входа в удаленную систему.

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

-w Позволяет указать для процесса рабочий каталог (путь внутри удаленной системы).

-x Отображает интерфейс пользователя на рабочем столе Winlogon (только в локальной системе).

-приоритет (приоритет) Позволяет задавать для процесса различные приоритеты: -low (низкий), -belownormal (ниже среднего), -abovenormal (выше среднего), -high (высокий) или -realtime (реального времени).

программа Имя запускаемой программы.

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

Примеры работы команды PSEXEC:

1) Для того чтобы запустить командную строку другого компьютера, необходимо ввести
psexec \ cmd

например:
psexec \WIN782 cmd

после этого можете вводить необходимые вам команды.

2) Для того чтобы запустить какою либо программу (в данном примере test.exe) на удаленном компьютере необходимо выполнить команду, (эта команда копирует программу test.exe в удаленную систему и выполняет ее в интерактивном режиме).

psexec \ -c test.exe

например:
psexec \WIN782 -c test.exe

3) Если в удаленной системе такая программа уже установлена и находится не в системном каталоге, укажите полный путь к этой программе

Есть программа написанная на C# и работающая с прибором по COM-порту. Программа установлена и прекрасно работает в том случае, если и она и COM-порт установлены на машине А. Однако есть необходимость в запуске программы с другого компьютера (машина Б) с доступом к прибору (прибор доступен напрямую только с машины А). Оба компа соединены по сети.

Есть ли возможность удаленно с машины Б открыть порт на машине А и связаться программой с прибором? Решения типа VSPE прошу не предлагать. Требуется именно либо штатными Windows средствами, либо написанием доп. модуля в программе это сделать (но тут вопрос, с использованием чего). DCOM, RPC, NET Remoting?

Выполнение команд на удаленном компьютере — задача довольно распространенная. Это может быть необходимо для изменения настроек системы, установки или удаления программ и много еще для чего. Для решения подобных задач есть довольно много различных инструментов, начиная с серьезных программных комплексов типа System Center Configuration Manager и заканчивая скромными утилитами командной строки . Об одной из таких утилит и пойдет речь в этой статье.

Читайте также:  Офисное кресло не поднимается

Утилита PsExec входит в состав пакета PsTools компании Sysinternals. Она позволяет выполнять команды на удаленных компьютерах и при этом не требует установки в систему. Для использования утилиты достаточно просто скопировать ее в папку с исполняемыми файлами (напр. C:Windowssystem32) и запустить из любой оболочки командной строки: Cmd или PowerShell.
Принцип работы программы состоит в следующем: в ресурсах исполняемого файла PsExec.exe находится еще один исполняемый файл – PSEXESVC, который является службой Windows. Перед выполнением команды PsExec распаковывает этот ресурс в скрытую административную папку удалённого компьютера Admin$ (C:Windows), в файл C:Windowssystem32psexesvc.exe.

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

После завершения копирования PsExec устанавливает и запускает службу, используя API функции Windows для управления службами. Затем, после запуска PSEXESVC между ним и PsExec устанавливается соединение для передачи данных (ввода команд и получения результатов). По завершению работы PsExec останавливает службу и удаляет её с целевого компьютера.

Синтаксис PsExec выглядит следующим образом:

psexec \компьютер [-u пользователь [-p пароль]] программа [аргументы]

Имя пользователя и пароль можно и не задавать, тогда удаленный процесс запускается из под той же учетной записи, что и программа PsExec. Однако поскольку удаленный процесс является олицетворением, то он не будет иметь доступа к сетевым ресурсам удаленной системы. Если же задать имя пользователя, то удаленный процесс запустится из под указанной учетной записи и получит доступ к тем же сетевым ресурсам удаленной системы, что и данная учетная запись. Однако имейте ввиду, что пароль передается в удаленную систему открытым текстом.

В качестве примера очистим кэш dns на удаленном компьютере SRV1:

psexec \SRV1 ipconfig /flushdns

Команда будет запущена на компьютере SRV1 под вашими учетными данными. После завершения работы ipconfig весь текстовый вывод будет передан на ваш компьютер, а кроме того будет возвращён код выполнения команды (error code). В случае если команда выполнилась успешно, он будет равен 0.

Если нужно выполнить несколько команд, то лучше установить с удаленным компьютером интерактивный сеанс. Для этого вводим команду psexec \SRV1 cmd . Теперь команды, вводимые на локальном компьютере будут выполняться на удаленном компьютере SRV1.

PsExec позволяет выполнить команду одновременно на нескольких компьютерах. Для этого можно ввести имена компьютеров через запятую: psexec \SRV1, SRV2 или сохранить их в текстовом файле и затем указать его адрес: psexec @c:comp.txt . Если же вместо имени компьютера поставить звездочку, вот так: psexec \* , то команда будет выполнена на всех компьютерах домена.

Читайте также:  Как скопировать сайт целиком и переделать

И еще один интересный способ использования утилиты PsExec. Если не указывать имя компьютера, то по умолчанию команда выполняется в локальной системе. Используя ключ -s можно запускать программы под учетной записью системы. Например, запустим сеанс командной строки: psexec -s cmd и затем командой whoami проверим, под каким пользователем мы сейчас работаем. Эта возможность может пригодиться для отладки программ или доступа к скрытым разделам реестра SAM и SECURITY.

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

-c

Указанная программа копируется в удаленную систему для выполнения. Например:

psexec \SRV1 -c test.exe

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

psexec \SRV1 «c:program files est.exe»

Если вместе с ключом -c использовать ключ -f то даже если программа уже есть в удаленной системе, она будет перезаписана. А с ключом -v она перезапишется только в том случае, если копируемая версия программы более новая чем та, что установлена в системе.

-i

Работа программы в интерактивном режиме. По умолчанию PsExec выполняет команды в скрытом режиме, то есть на системе где выполняется команда, не выводятся никакие окна или диалоги. Однако есть возможность изменить это с помощью ключа -i . После него можно указать номер сессии, в которой выводить окна, а можно и не указывать, тогда интерфейс будет отображен в консольной сессии.

-d

Указывает, что не нужно ждать завершения приложения. В этом случае мы не получим выходных данных от консольной утилиты, но зато сможем не дожидаясь завершения предыдущей команды запускать следующие. Этот параметр следует использовать только при запуске неинтерактивных приложений.

-h

Используется для запуска программы в режиме повышения полномочий. Может потребоваться в операционных системах Windows Vista и выше для запуска некоторых программ, вносящих изменения в настройки системы (например regedit).

-l

А с помощью этого ключа можно наоборот понизить полномочия. При запуске процесса пользователю вне зависимости от его принадлежности к группе администраторов предоставляются ограниченные права (права группы «администраторы» отменяются, и пользователю предоставляются только права, назначенные группе «пользователи»).

Полную справочную информацию о всех ключах программы можно получить, просто введя команду psexec в командной строке без параметров.

Ссылка на основную публикацию
Adblock detector