09.09.2020
itpro
Разное
комментария 2
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 следующие:
В том случае, если имя пользователя и пароль не указаны, используются права текущего пользователя:
psexec buh_pc1 cmd.exe
psexec buh_pc1 -u admin -p [email protected] notepad.exe
В принципе эту утилиту можно рассматривать как альтернативу telnet. Внимание: при использовании PsExec будьте осторожны, так как в принципе соединение между сервером и клиентом PsExec не шифруется и данные можно перехватить сетевым сниффером.
Если вам понадобится запустить определенную команду на нескольких компьютерах одновременно (например, shutdown –f –r –t 0 ☺), то их имена или ip-адреса нужно перечислить через запятую, или же поместить в текстовый файл, который выбрать в качестве одного их параметров утилиты PsExec..
psexec buh_pc1, buh_pc2 shutdown –f –r –t 0
При использовании ключа “-c” указанная программа сначала скопируется с вашего ПК на удаленный, а потом выполнится. Ключ “-i” заставляет указанную команду запустится в интерактивном режиме. Если вы хотите, чтобы после запуска определенной команды PsExec не ждал ее окончания, а вывернул вам управление (командную строку), нужно указать параметр “-d”:
PsExec Tool
psexec -d buh_pc1 chkdsk
Эта команда запустит на удаленной системе процесс проверки диска, а администратор сможет продолжить введение команд.
Предыдущая статья Следующая статья
Читайте далее в разделе Разное
Файловая система exFAT
Консоль удаленного рабочего стола(rdp console)
Ключи реестра Windows, отвечающие за параметры экранной заставки
Источник: winitpro.ru
PsExec версии 2.43
PsTools(5 МБ)
Введение
Служебные программы, такие как Telnet и программы удаленного управления, такие как компьютер Symantec Anywhere, позволяют выполнять программы на удаленных системах, но их может быть трудно настроить и потребовать установки клиентского программного обеспечения в удаленных системах, к которым вы хотите получить доступ. PsExec — это легкая замена telnet, которая позволяет выполнять процессы в других системах, в комплекте с полным взаимодействием консольных приложений без необходимости вручную устанавливать клиентское программное обеспечение. Наиболее эффективные способы использования PsExec включают запуск интерактивных командных строк в удаленных системах и средства удаленного включения, такие как IpConfig, которые в противном случае не могут отображать сведения об удаленных системах.
Примечание. Некоторые антивирусные сканеры сообщают, что один или несколько средств заражены вирусом «удаленного администратора». Ни один из PsTools не содержит вирусов, но они были использованы вирусами, поэтому они запускают уведомления о вирусах.
Установка
Просто скопируйте PsExec в путь к исполняемому файлу. При вводе «psexec» отображается синтаксис использования.
Использование программы PsExec
См. статью Марка в выпуске журнала Windows IT Pro magazine за июль 2004 г., посвященной расширенному использованию PsExec.
Использование:
Приложения, имена которых имеют пробелы, можно заключать в кавычки, например.
psexec \marklap «c:\long name app.exe»
Входные данные передаются в удаленную систему только при нажатии клавиши ВВОД. При вводе клавиш CTRL+C удаленный процесс завершается.
Если опустить имя пользователя, процесс будет выполняться в контексте вашей учетной записи в удаленной системе, но не будет иметь доступа к сетевым ресурсам (так как это олицетворение). Укажите допустимое имя пользователя в синтаксисе DomainUser , если удаленный процесс требует доступа к сетевым ресурсам или для запуска в другой учетной записи. Обратите внимание, что пароль и команда шифруются при передаче в удаленную систему.
Коды ошибок, возвращаемые PsExec, относятся к выполняемым приложениям, а не к PsExec.
Примеры
В этой статье описывается, как работает PsExec , и приводятся советы по его использованию:
Следующая команда запускает интерактивную командную строку в \marklap :
psexec -i \marklap cmd
Эта команда выполняет IpConfig в удаленной системе с параметром /all и отображает выходные данные локально:
psexec -i \marklap ipconfig /all
Эта команда копирует программу test.exe в удаленную систему и выполняет ее в интерактивном режиме:
psexec -i \marklap -c test.exe
Укажите полный путь к программе, которая уже установлена в удаленной системе, если она не находится в пути к системе:
psexec -i \marklap c:bintest.exe
Запустите Regedit в интерактивном режиме в системной учетной записи, чтобы просмотреть содержимое ключей SAM и SECURITY:
psexec -i -d -s c:windowsregedit.exe
Чтобы запустить интернет-Обозреватель с ограниченными правами пользователя, используйте следующую команду:
psexec -l -d «c:program filesinternet exploreriexplore.exe»
PsTools(5 МБ)
Средства PSTools
PsExec входит в состав растущего набора средств командной строки Sysinternals, которые помогают в администрировании локальных и удаленных систем под названием PsTools.
Выполняется в:
- Клиент: Windows 8.1 и выше.
- Сервер: Windows Server 2012 и выше.
Источник: learn.microsoft.com
1000++ способ запуска команд на удаленном компьютере
В наше время даже для собак придумали удаленное управление.
Возвращаясь к циклу «Конспект Админа», мне хотелось бы рассказать о вариантах запуска исполняемых программ на удаленных компьютерах. Эта статья будет интересна тем, у кого еще нет систем централизованного управления, но уже есть понимание утомительности ручного обхода рабочих станций и серверов. Либо тем, кому решения «под ключ» не интересны ввиду неспортивности.
В качестве того, зачем нужен такой запуск программ, можно привести недавнюю истерию с ПетейНе-Петей, когда все бросились проверятьотключать SMBv1 и загружать обновления. Да и провести инвентаризацию или установить срочный патч таким методом тоже можно.
Когда-то давно я устроился работать в организацию в период эпидемии KidoConficker. Наиболее простым способом выяснить, все ли хорошо в ИС компании, была славная утилита от Касперского под названием Kido Killer, которая проверяла наличие вируса и устраняла его. Запускать программу на доброй сотне машин руками было невесело, поэтому пришлось знакомиться с автоматизацией.
Если в операционных системах *nix для удаленного запуска, как правило, используется SSH, то у Windows способов запуска программ и скриптов воистину как песка в пустыне. Я разберу основные варианты, как общеизвестные, так и экзотические. Таких очевидных вещей как telnet-сервер касаться не буду, тем более Microsoft уже убрала его из современных ОС.
Способы старые, временем проверенные
Psexec
Пожалуй, это первое, что приходит на ум, когда идет речь об удаленном запуске программ. Утилита от Марка Руссиновича используется еще со времен Windows NT и до сих пор применяется. Помимо основной функции, можно использовать ее и как Runas, и для запуска программ в пользовательской сессии терминального сервера. Psexec также позволяет задавать ядра процессора, на которых будет запускаться программа, и ее приоритет в системе.
В качестве примера посмотрим, установлено ли обновление, закрывающее нашумевшую уязвимость SMB на списке компьютеров:
В файле computers.txt находится список компьютеров. Для запуска по всему домену можно использовать \*. В файле \serversharelog.txt будут появляться имена рабочих станций или серверов без обновления. Если в домене существуют компьютеры с *nix на борту или нет доступа к административному сетевому ресурсу Admin$ ― команда на этой машине не выполнится, но обработка продолжится. Чтобы скрипт не зависал при каждой попытке подключения, можно задать тайм-аут с помощью ключа -n.
Если компьютер выключен ― мы об этом не узнаем. Поэтому лучше предварительно проверять доступность машин или собирать в файле информацию об успешном или неудачном выполнении.
К минусам Psexec можно отнести то, что она из-за своего удобства и популярности часто используется вирусописателями. Поэтому антивирусные системы могут обнаруживать утилиту как опасность вида remote admin.
По умолчанию процесс на удаленной машине выполняется от имени пользователя, запустившего Psexec. При необходимости логин и пароль можно задать явно или же использовать аккаунт SYSTEM.
WMIC
Для управления системами Windows с помощью разных графических утилит часто используется WMI (Windows Management Instrumentation) ― реализация объектно-ориентированного стандарта управления WBEM. В качестве утилиты с графическим интерфейсом для работы с WMI можно использовать wbemtest.exe.
Для работы с WMI из консоли создана wmic.exe. Например, для проверки установленных обновлений вместо жутковатой конструкции из предыдущего примера можно использовать простую команду:
wmic /node:»servername» qfe get hotfixid | find «KB4012212»
Еще при помощи WMI можно запускать программы – синтаксис предельно прост:
wmic /node:»servername» process call create «cmd /c somecommands»
К сожалению, в отличие от Psexec, получить вывод в консоли не получится ― придется выводить результаты команды в файл.
По умолчанию процесс на удаленной машине выполняется от имени пользователя, запустившего wmic. При необходимости логин и пароль можно задать явно.
Групповые политики и скрипты
Если предыдущие варианты не требовали доменной среды, то в этом случае потребуется домен. Поддерживаются скрипты при входе и выходе пользователя из системы, а также при ее включении и выключении. Поскольку каждый администратор Windows сталкивался с ними, я не буду подробно расписывать как ими пользоваться ― лишь напомню, где их искать.
Скрипты, выполняющиеся при старте и завершении системы.
Скрипты, выполняющиеся при входе и выходе пользователя из системы.
Скрипты, настраиваемые в пользовательском разделе, выполняются от имени пользователя, а в разделе компьютера ― под аккаунтом SYSTEM.
Назначенные задания
Довольно интересный способ, заслуживающий право на жизнь. Назначенные задания можно создавать из командной строки при помощи утилиты schtasks.exe, выполнять их, затем удалять. Подробнее с синтаксисом можно ознакомиться в документации, я же разберу пример использования назначенных заданий в доменной среде. Предположим, нам нужно выполнить команду как можно быстрее вне зависимости от того, выключен компьютер или нет. Для этого используются так называемые предпочтения групповых политик (Group Policy Preference).
Искать установку назначенных заданий следует в конфигурации компьютера или пользователя ― «Настройка ― Параметры панели управления ― Назначенные задания».
Создание нового назначенного задания.
Для выполнения команды или скрипта ASAP понадобится создать «Немедленную задачу (Windows 7 и выше)». Если вдруг в инфраструктуре остались машины под управлением Windows XP, то подойдет «Очередное задание (Windows XP)».
Стоит сделать несколько политик с соответствующими WMI-фильтрами или создать два разных назначенных задания в одной политике с нацеливанием ― например, при помощи того же WMI-фильтра. Это поможет избежать конфликтов в разнородной среде со старыми и новыми Windows.
Пример WMI-фильтра для применения политики только на компьютерах с Windows XP:
SELECT * FROM Win32_OperatingSystem WHERE Version LIKE «5.1%» AND ProductType = «1»
В остальном процедура создания назначенного задания тривиальна. Единственное, не забывайте отметить пункт «Применить один раз и не применять повторно», если задача не требует повторного запуска.
Запускаем немедленную задачу только один раз.
При использовании таких назначенных заданий программа запустится, как только компьютер получит обновление групповой политики. Это удобно: не нужно проверять доступность компьютеров в случае Psexec и wmic и заставлять пользователей перезагружать машины, как в случае скриптов групповых политик. При необходимости можно скопировать файл скрипта локально в разделе «Настройка ― Конфигурация Windows ― Файлы».
Назначенные задания позволяют явно задать имя пользователя для запуска программы, в том числе и для SYSTEM.
Через реестр
Модификация реестра на пользовательских машинах ― странный вариант, лишь на случай крайней необходимости. Можно использовать ветки Run или RunOnce. Подробнее о них ― в документации. Сама модификация реестра может проводиться через групповые политики или из командной строки ― например, такой командой:
reg add \COMPUTERHKLMSoftwareMicrosoftWindowsCurrentVersionRunOnce /v script /t Reg_SZ /d «script.cmd»
В зависимости от ветки реестра, процесс будет выполняться или под пользователем, выполнившим вход в систему, или под аккаунтом SYSTEM.
Есть и другие способы, такие как правка ярлыков в папке «Автозагрузка» или добавление в ярлык к популярной программе script.cmd, но эти методы уже из серии «можно, но не нужно».
Теперь перейдем к новым инструментам.
Способы новые или куда же без PowerShell
PowerShell, оправдывая свое название, может подключаться к удаленным компьютерам при помощи WMI, RPC и WS-Management (WSMan). Использование последнего метода требует предварительной настройки.
Командлеты, не требующие предварительной настройки, как правило, имеют параметр ComputerName, но не имеют параметра Session. Посмотреть список таких командлетов можно командой:
Get-Command | where
Для настройки WSMan в общем случае достаточно выполнить команду Enable-PSRemoting-Force. Она запустит службу удаленного управления WinRM и пропишет исключения в фаерволе ― в принципе, это можно сделать для всего домена при помощи групповых политик. Подробнее настройка описана в документации.
После того как все компьютеры будут готовы принимать запросы, мы сможем подключаться при помощи соответствующих командлетов PowerShell. Для проверки возможности подключения используется командлет Test-WSMan.
Проверка возможности подключения.
Для того чтобы выполнить определенную команду или скрипт, используется командлет Invoke-Command со следующим синтаксисом:
Invoke-Command -ComputerName COMPUTER -ScriptBlock < COMMAND >-credential USERNAME
Где COMPUTER ― имя компьютера, COMMAND ―– имя команды, а USERNAME ― имя пользователя, если оно нужно.
Смотрим содержимое диска С удаленного компьютера.
Если же нам нужно получить полноценную консоль ― не автоматизации ради, а ради управления конкретным компьютером, ― то можно использовать командлет Enter-PSSession.
Работаем в консоли удаленного компьютера.
Напомню, что с помощью JEA можно ограничить доступные подобной сессии командлеты или дать доступ нужным без прав администратора.
Конечно, кроме встроенных средств и небольших утилит, существует множество программ для управления структурой. Помимо взрослых решений, для управления конфигурациями вроде Chef, Ansible и MS SCCM можно использовать и средства мониторинга вроде Zabbix, и даже консоль управления антивирусом Касперского.
В период гетерогенных структур хорошо бы иметь возможность унифицированного управления Windows и Linux. Это можно сделать и с помощью PowerShell, что само по себе достойно отдельной статьи ― стоит такую сделать или уже лишнее?
Кстати, поделитесь вашими способами скрытого и не очень запуска программ на удаленных компьютерах. Ну, за исключением эксплойтов.
- Блог компании Сервер Молл
- Системное администрирование
- PowerShell
- Серверное администрирование
- Терминология IT
Источник: habr.com