PsExec — Позволяет выполнить приложение на локальном или удаленном компьютере. Естественно, при наличии соответствующих прав доступа. Большинство ключей командной строки, используемые для PSexec, используются и для других утилит пакета, поэтому будут рассмотрены подробно.
Использование:
psexec.exe [\computer[,computer2[,…] | @file][-u user [-p psswd]][-s|-e][-i][-c [-f|-v]][-w directory][-d][-priority][-a n,n,…] cmd [arguments]
computer — имя или IP-адрес компьютера. Если пропущено — то приложение запускается на локальном компьютере. Если используется шаблон (\*), PsExec выполнит приложение на всех компьютерах текущего домена.
@file — имя файла со списком компьютеров для выполнения.
-u — имя пользователя. Если опущено — то будет использовано имя текущего пользователя.
-p — пароль. Если опущен, то будет запрошен программой.
-s — выполнить приложение с локальными системными правами (Local system account).
-e — использовать указанный профиль пользователя.
-i — разрешить удаленной программе взаимодействовать с рабочим столом на удаленном компьютере. Если ключ не задан, то выполнение удаленной программы происходит незаметно для пользователя удаленного компьютера.
-c — копировать указанную программу на удаленный компьютер перед выполнением. Если ключ опущен, то программа для выполнения должна присутствовать на удаленном компьютере в путях поиска, задаваемых переменной окружения path.
-f — выполнять копирование даже при наличии исполняемого файла на удаленном компьютере.
-v — выполнять копирование только в случае, если исполняемый файл имеет более позднюю версию.
-d — не ждать завершения удаленного процесса.
-w — установить рабочий каталог для удаленного процесса.
-priority — приоритет для удаленного процесса. Может принимать значения (в порядке возрастания) -low, -belownormal, -abovenormal, -high, -realtime.
-a — указание процессоров (для мультипроцессорных систем) на котором будет выполняться приложение. Например — для CPU 1, CPU 4, ключ: «-a 1,4»
program — имя приложения для выполнения на удаленной системе.
arguments — аргументы для удаленного приложения. Пути файлов должны задаваться относительно удаленного компьютера и имена файлов или каталогов, содержащие пробелы должны заключаться в двойные кавычки, например — «C:Program FilesUser FolderProgramm.exe»
Ввод с клавиатуры направляется на удаленный компьютер, нажатие Ctrl-C завершит удаленный процесс. Если не задано имя пользователя, то удаленный процесс будет выполнен на удаленной системе с правами локальной системной учетной записи, т.е. без доступа к сетевым ресурсам, даже если ваша учетная запись на удаленной системе дает вам такой доступ. Поэтому, если удаленному приложению требуется доступ к сетевым ресурсам, задавать имя пользователя в формате «DomainUser» обязательно. Код возврата (ERRORLEVEL) по завершению Psexec определяется удаленным приложением, что позволяет анализировать результаты выполнения удаленного приложения в командных файлах.
Примеры:
— запустить командный процессор cmd.exe на удаленном компьютере
Psexec.exe \192.168.0.1 cmd.exe
Psexec.exe \Comp1 cmd.exe
Psexec.exe \192.168.0.1 -u vasya -p mypass cmd.exe
Psexec.exe \192.168.0.1 -u vasya -p mypass -c -f -w C: cmd.exe
В результате вы получаете доступ к командной строке на удаленном компьютере и увидите приглашение:
Microsoft Windows 2000 [Версия 5.00.2195]
(С) Корпорация Майкрософт, 1985-2000.
С:WINNTsystem32 >
Теперь команды, вводимые с консоли этого окна будут выполняться на удаленном компьютере. Однако, не стоит запускать на выполнение программы, использующие графический интерфейс, взаимодействие с ними будет невозможно.
Вы можете выполнить любую консольную команду на удаленном компьютере. Примеры:
— получить информацию о настройке TCP/IP
Psexec.exe \REMOTEPC -u MydomainMyUsername -p mypass ipconfig /all
— получить информацию о сетевом окружении на REMOTEPC:
Psexec.exe \REMOTEPC -u MydomainMyUsername -p mypass net view
— послать сообщение от REMOTEPC на другой компьютер (REMOTE2):
Psexec.exe \REMOTEPC -u MydomainMyUsername -p mypass net send REMOTE2 TEXT OF MESSAGE
— подключить диск «C» удаленного компьютера REMOTE2 к удаленному компьютеру REMOTEPC:
Psexec.exe \REMOTEPC -u MydomainMyUsername -p mypass net use X: \REMOTE2C
— скопировать каталог C:TEST с удаленного компьютера REMOTEPC на удаленный компьютер REMOTE2:
Psexec.exe \REMOTEPC -u MydomainMyUsername -p mypass xcopy C:test*.* X:TEST*.*
— архивировать данные каталога «C:TEST» удаленного компьютера REMOTEPC на удаленный компьютер REMOTE2:
Psexec.exe \REMOTEPC -u MydomainMyUsername -p mypass arj a X:ARHIVtest.arj C:TEST*.*
Для того, чтобы выполнить командный файл (.bat или .cmd), нужно сначала скопировать его на удаленный компьютер, т.е. обязательно использовать ключ -c. Если в командном файле используются сетевые диски или команды, требующие доступ к сети (например, NET.EXE ), то нужно задать имя пользователя:
Psexec.exe \192.168.0.1 -u vasya -p mypass -c mycmd.cmd
Иногда необходимо запустить приложение на удаленном компьютере, видимое для его пользователя. Используйте ключ -i:
Psexec.exe \192.168.0.1 -u vasya -p mypass -i notepad.exe
После запуска блокнота (notepad.exe) PsExec будет ждать его завершения удаленным пользователем. Если в этом ожидании нет необходимости, то нужно использовать ключ -d.
Особенность запуска приложения от имени локальной учетной записи позволяет получить в редакторе реестра (REGEDIT.EXE) доступ к разделам SAM и SECURITY. Для этого нужно запустить удаленно regedit без указания имени пользователя и пароля и использовать «-i»:
psexec.exe \REMOTE -i regedit.exe
После чего на компьютере \REMOTE запустится редактор реестра с доступными разделами SAM и SECURITY.
Или локально с ключами -s и -i:
psexec.exe -s -i regedit.exe
В Windows Vista/7/8 используется изоляция сеанса, в котором работают системные службы, от сеанса пользователя (Session 0 Isolation), поэтому команда для этих версий ОС будет выглядеть иначе:
psexec -s -i 0 regedit.exe
после чего нужно нажать на кнопку «Просмотреть сообщение» в диалоговом окне «Обнаружение интерактивных служб».
Учтите, что в таком режиме использования редактора реестра вы получаете права на создание, изменение и удаление даже таких ключей, которые доступны только процессам ядра.
С точки зрения системного администрирования PSexec удобно использовать для запуска приложений на всех компьютерах домена (вместо имени компьютера задать — \*) с правами администратора или под локальной системной учетной записью (ключ -s).
Psexec.exe \* -s install.exe — запустить install.exe на всех компьютерах домена под системной учетной записью
Ну и последнее — Psexec можно использовать для обхода ошибки типа «Negative delta time», возникающей на многоядерных системах из-за несовпадения счетчиков RTSC (Real Time Stamp Counter) у разных ядер. Для чего приложение запускается с помощью psexec только для одного ядра (ключ -a):
psexec.exe -a 1 -i -w «папка приложения» «приложение»