Утиліта PsExec і дистанційне керування системами

PsExec - це зручна утиліта командного рядка, за допомогою неї можна запускати програми на віддалених Windows системах, перенаправляючи дані, які виводиться додатком на екран на локальний ПК. Тобто при роботі з цією програмою складається відчуття, що додаток працює локально на вашому ПК. PsExec - безкоштовна утиліта і її можна завантажити за адресою https://download.sysinternals.com/files/PSTools.zip.

Які вимоги до оточення при роботі з утилітою PsExec? Для віддаленого запуску команд і процесів необхідно, щоб на віддаленому та локальному ПК функціонували служби "Сервер" і "Робоча станція" (Workstation і Server), а на віддаленому комп'ютері повинен бути доступний стандартний загальний ресурс Admin $.

Зручність PsExec в тому, що її легко розгорнути в мережі завдяки можливості віддаленого встановлення, без необхідності встановлювати або налаштовувати щось на кожному. На віддаленому ПК PsExec працює в вигляді служби Windows з таким же ім'ям.

PsExec дуже зручна при виконанні безлічі завдань з обслуговування та адміністрування віддалених робочих станцій і серверів. Встановлювати її не потрібно, можна просто скопіювати її в каталог, визначений в змінної %path% (Наприклад, C: WindowsSystem32). При запуску команд через PsExec на віддаленому ПК запуститься служба PsExec (виконуваний файл system32psexesvc.exe), відповідно для нормальної роботи вам знадобляться права адміністратора домена на віддаленій машині. Формат запуску і параметри командного рядка у утиліти PsExec наступні:

Usage: psexec [computer [, computer2 [...] | @file] [- u user [-p psswd]] [- ns] [- l] [- s | -e] [- x] [- i [session]] [- c [-f | -v]] [-w directory] [- d] [-] [- an, n, ...] cmd [arguments]

У тому випадку, якщо ім'я користувача та пароль не вказані, використовуються права поточного користувача:

psexec buh_pc1 cmd.exe
psexec buh_pc1 -u admin -p P @ ssw0rd notepad.exe

В принципі цю утиліту можна розглядати як альтернативу telnet. Увага: При використанні PsExec будьте обережні, так як в принципі з'єднання між сервером і клієнтом PsExec не шифрується і дані можна перехопити мережевим сніффером.
Якщо вам знадобиться запустити певну команду на декількох комп'ютерах одночасно (наприклад, shutdown -f -r -t 0 ☺), то їх імена або ip-адреси потрібно перерахувати через кому, або ж помістити в текстовий файл, який вибрати в якості одного їх параметрів утиліти PsExec ...

psexec buh_pc1, buh_pc2 shutdown -f -r -t 0
psexec @c: list_of_buh_pc.txt shutdown -f -r -t 0

При використанні ключа "-c" зазначена програма спочатку скопіюється з вашого ПК на віддалений, а потім виконається. Ключ "-i" змушує зазначену команду запуститься в інтерактивному режимі. Якщо ви хочете, щоб після запуску певної команди PsExec не очікував її закінчення, а вивернув вам управління (командний рядок), потрібно вказати параметр "-d":

psexec -d buh_pc1 chkdsk

Ця команда запустить на віддаленій системі процес перевірки диска, а адміністратор зможе продовжити введення команд.