Сервісний центр VPSGroup ремонт комп'ютерної техніки, заправка картриджів, ремонт оргтехніки, Київ, Виставковий центр, Васильківська, 55

PsExec - утиліта для віддаленого виконання команд.

Виконання команд на віддаленому комп'ютері - завдання досить поширена. Це може бути необхідно для зміни налаштувань системи, установки або видалення програм і багато ще для чого. Для вирішення подібних завдань є досить багато різних інструментів, починаючи з серйозних програмних комплексів типу System Center Configuration Manager і закінчуючи скромними утилітами командного рядка.Про одну з таких утиліт і піде мова в цій статті.

Утиліта PsExec входить до складу пакету PsTools компанії Sysinternals. Вона дозволяє виконувати команди на віддалених комп'ютерах і при цьому не вимагає установки в систему. Щоб мати змогу користуватися досить просто скопіювати її в папку з виконуваними файлами (напр.C: \ Windows \ system32) і запустити з будь-якої оболонки командного рядка: Cmd або PowerShell.
Принцип роботи програми полягає в наступному: в ресурсах виконуваного файлу PsExec.exe знаходиться ще один виконуваний файл - PSEXESVC, який є службою Windows. Перед виконанням команди PsExec розпаковує цей ресурс в приховану адміністративну папку віддаленого комп'ютера Admin $ (C: \ Windows), в файл C: \ Windows \ system32 \ psexesvc.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 \ test.exe »

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

-i

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

-d

Вказує, що не потрібно чекати завершення програми. В цьому випадку ми не отримаємо вихідних даних від консольної утиліти, але зате зможемо не чекаючи завершення попередньої команди запускати такі. Цей параметр слід використовувати тільки при запуску неінтерактивних додатків.

-h

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

-l

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

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