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

В продолжении темы PsExec предлагаю ознакомиться со статьей по удаленной установке и деинсталляции программ

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

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

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