PsExec

Любой сисадмин слышал про PsExec.
Однако на практике далеко не все знают нюансы использования этой утилиты.
Разберем несколько примеров команд и эти самые нюансы в работы с ней.

PsExec это утилита Марка Руссиновича из написанного им пакета программ Sysinternals, которая позволяет выполнять команды на удаленных компьютерах, в том числе и с системными правами.

PsExec работает только с повышенными привилегиями:
сеанс необходимо запускать под администратором

Для теста можете попробовать создать папку в сеансе без привилегий:

В  результате вы увидите ошибку Couldn’t install PSEXESVC service

 

Важно понимать что PsExec не дает админских прав тем, у кого их нет:
она только позволяет выполнять команды на удаленных ПК

 

Запуск от имени системы

Так как права System имеют наивысший приоритет, в редких случаях пригодится возможность запуска программ с такими привилегиями.
Например запустить regedit, в котором будут доступны два, по умолчанию скрытых раздела: HKLM\SAM и HKLM\SECURITY
Для это необходимо запустить PsExec с ключом -s

Кстати ключ -i необходим для запуска программ в интерактивном режиме.
Т.е. он определяет будет ли выведен GUI на экран,
или же программа запуститься в фоновом режиме,
увидеть и завершить которую мы сможет только через диспетчер задач.

Примеры команд

Запуск команды CMD через PsExec на удаленном хосте:

Получим размер папки Temp на удаленном компьютере с помощью PoSh:

 

Ключ -ExecutionPolicy RemoteSigned необходим для того,
что бы не возникала ошибка, вызванная запретом выполнения скриптов по умолчанию

 

PSexec в Powershell

Весьма удобно использовать PsExec в сценариях Powershell.
Например в скрипте для удаленной установки обновления Skype (8 версии):

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

Важный момент

По умолчанию PsExec, после выполнения каждой команды, возвращает в консоль код ошибки.
В случае отсутствии ошибки кодом будет 0.
Тем не менее оболочка, для того что бы вывести приглашение к вводу, будет ожидать нажатия Enter.
В противном случае выполнение программы остановится и будет висеть пока вы не остановите ее выполнение вручную.
Понятное дело что на удаленном компьютере мы не желаем ничего нажимать.
Что бы PsExec не зависал,
нам нужно использовать powershell.exe вместе с ключом

Share on VKShare on FacebookTweet about this on TwitterShare on Google+Pin on PinterestEmail this to someone

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *