1

Тема: CMD/BAT: удаленный запуск процессов, используем PsExec из PsTools

Работаем с утилитой PsExec из комплекта PsTools от Марка Руссиновича (Mark Russinovich).
http://technet.microsoft.com/en-us/sysi … 97553.aspx
PsExec - легкая замена telnet, которая позволяет вам выполнять процессы на других системах с полноценным функционалом консольных приложений, не имея необходимости вручную устанавливать клиентское программное обеспечение. Самое эффектное использование PsExec включает интерактивные приглашения ко вводу команды на отдаленных системах и отдаленный запуск таких инструментальных средств, как IpConfig. Обратите внимание: некоторые антивирусные сканеры сообщают, что один или больше файлов заражены вирусом "remote admin". Ни одна из утилит PsTools не содержит вирусов, но они использовались вирусами, что и является причиной, почему они вызывают вирусные уведомления.

Инсталляция: просто скопируйте psexec.exe туда, откуда его можно вызвать без точного указания пути, например, в C:\WINDOWS\system32\. Команда "psexec" отобразит свой синтаксис использования.

Использование:
psexec [\\computer[,computer2[,...] | @file][-u user [-p psswd]][-n s][-l][-s|-e][-x][-i [session]][-c [-f|-v]][-w directory][-d][-<priority>][-a n,n,... ] cmd [arguments]

computer
Указывает PsExec выполнить приложение на определенных компьютерах. Если вы опускаете имя компьютера, PsExec выполняет приложение на текущей системе. Если вы указывате имя "\\*", PsExec выполняет приложение на всех компьютерах в текущем домене.

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

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

-c
Скопировать указанную программу на отдаленную систему для выполнения. Если вы опускаете эту опцию, приложение должно быть "в путях" (path) отдаленной системы.

-d
Не ждать завершения приложения.

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

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

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

-l
Выполнить процесс под ограниченным пользователем (игнорирует группу Administrators и разрешает только привилегии, назначенные группе Users). На Windows Vista процесс выполняется  как Low Integrity.

-n
Определяет таймаут в секундах для соединения с отдаленными компьютерами.

-p
Определяет опциональный пароль пользователя. Если вы опустите это, будет запрошен ввод пароля.

-s
Выполнить удаленный процесс под системной учетной записью (System).

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

-v
Скопировать указанный файл, только если он имеет более высокий номер версии или более нов, чем расположенный на удаленной системе.

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

-x
Отобразить UI на рабочем столе Winlogon (только для местной системы).

-priority
Определяет -low, -belownormal, -abovenormal, -high или -realtime, чтобы выполнить процесс с различным приоритетом. Используйте -background, чтобы выполнить команду в "low memory" и "I/O priority" на Vista.

program
Имя программы для запуска.

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

Вы можете заключить приложения, в именах которых есть пробелы, в кавычки, например:
psexec \\marklap "c:\long name\app.exe"
Ввод передаётся удаленной системе, когда Вы нажимаете клавишу ENTER, а Ctrl-C завершает удаленный процесс.

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

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

Примеры

Следующая команда запускает интерактивную командную строку на компьютере \\marklap:
psexec \\marklap cmd

Эти команды выполняют IpConfig на удаленной системе с переключателем /all, и отображают получающийся вывод в местном контексте:
psexec \\marklap ipconfig /all
psexec -u domainname\username -p password \\marklap ipconfig /all

Эта команда копирует программу test.exe на уаленную систему и выполняет её в интерактивном режиме:
psexec \\marklap -c test.exe

Определите полный путь к программе, которая уже установлена на удаленной системе, если она находится не "в путях" системы:
psexec \\marklap c:\bin\test.exe

Выполните Regedit в интерактивном режиме под системной учетной записью, чтобы просмотреть содержимое ключей SAM И SECURITY:
psexec -i -d -s c:\windows\regedit.exe

Чтобы выполнить Internet Explorer с привилегиями ограниченного пользователя, используйте такую команду:
psexec -l -d "c:\program files\internet explorer\iexplore.exe"

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