Как сделать

Использование PsTools для управления другими ПК из командной строки

SysInternals 8

На сегодняшнем уроке из серии Geek School, посвященной SysInternals, мы покажем вам, как использовать набор утилит PsTools для выполнения всех видов задач администрирования как локально, так и на удаленных компьютерах.

Если вы когда-нибудь хотели подключиться к другому компьютеру и запустить команду, быстро получить информацию о запущенных процессах и, возможно, завершить их, или даже остановить службу на другом ПК, вы можете использовать утилиты PsTools для выполнения всех этих задач и даже Больше.

Очевидно, что вы можете использовать удаленный рабочий стол или аналогичную службу для подключения к любому компьютеру с Windows и фактически видеть рабочий стол и делать все, что вы будете делать локально, но утилиты PsTools позволяют вам выполнять множество задач из командной строки — или, что еще лучше, из скрипт, который вы можете использовать позже.

Это тот тип утилит, который лучше всего работает в корпоративной среде, и овладение этими инструментами определенно сделает вас намного лучше в работе по системному администрированию, сэкономит ваше время и позволит вам делать вещи намного умнее. Делать вещи умнее и быстрее — это важный навык для того, чтобы быть отличным сисадмином.

В наборе PsTools есть двенадцать инструментов, и хотя некоторые из них чрезвычайно полезны, другие были заменены инструментами, встроенными в более поздние версии Windows, и есть несколько других, которые бесполезны для большинства людей. Мы рассмотрим все из них, чтобы вы поняли, как они работают и почему вы можете захотеть использовать каждый из них.

  • PsExec — выполняет процессы на удаленном компьютере
  • PsFile — показывает файлы, которые открываются на удаленном компьютере через сеть
  • PsGetSid — отображает идентификатор безопасности для компьютера или пользователя
  • PsInfo — выводит информацию о системе
  • PsKill — убивает процессы по имени или идентификатору
  • PsList — выводит информацию о процессах в командной строке
  • PsLoggedOn — список учетных записей, которые вошли в систему либо на компьютере или удаленного подключения
  • PsLogList — вытащить журнал событий из командной строки
  • PsPasswd — изменить пароль для пользователей
  • PsPing — довольно простая утилита ping с некоторыми дополнительными функциями
  • PsService — перечислять и вносить изменения в службы Windows
  • PsShutdown — выключить, выйти из системы или приостановить работу компьютера
  • PsSuspend — приостанавливать и возобновлять процессы (а не убивать их)

Стоит отметить, что вы можете использовать такой инструмент, как PsExec, для запуска всех видов утилит командной строки на удаленных компьютерах, включая действительно полезные, такие как инструмент командной строки Autoruns и многие другие. Возможности безграничны, когда вы освоите мощь PsTools.

Все эти инструменты можно использовать на локальных компьютерах, но они в основном полезны для подключения к удаленным компьютерам и выполнения команд на них.

Подключение к удаленным компьютерам (синтаксис для всех утилит)

Все утилиты могут быть запущены как на локальном, так и на удаленном компьютере, поэтому при необходимости все они имеют один и тот же первый аргумент для имени компьютера. Обратите внимание, что вы можете использовать IP-адрес, если хотите вместо этого. Если вы пропустите этот аргумент, команда будет работать на вашем локальном компьютере.

psinfo \\ имя_компьютера

Вы также можете перечислить несколько компьютеров, таких как psinfo \\ computer1, computer2, computer3, или вы можете поместить все имена в файл и указать ссылку, например psinfo @ computerlist.txt. Последний синтаксис psinfo \\ *, который работает на всех компьютерах в домене, что, вероятно, не то, что вы будете использовать каждый день.

Если вам нужно подключиться с альтернативными учетными данными, поскольку учетная запись вашего локального компьютера имеет другое имя пользователя и пароль, чем у другого компьютера, вы можете использовать опции -u и -p, хотя мы заметим, что вы можете не использовать -p для командная строка с паролем в команде по соображениям безопасности. Обновление: начиная с последней версии PsExec , ни один инструмент больше не передает пароли в виде открытого текста, поэтому единственное беспокойство — это если кто-нибудь сможет прочитать ваши файлы сценариев и увидеть пароль там.

psinfo \\ имя_компьютера -u «пользователь» -p «пароль»

Часть «user» команды изменится на «DOMAIN \ user», если вы находитесь в доменной среде и вам нужно перейти от текущего работающего пользователя.

Примечание. Обычно вам необходимо подключаться к удаленным компьютерам с учетной записью администратора.

Настройка доступа к удаленному администрированию

Если вы находитесь в доменной среде, которой будет пользоваться большинство людей, которым необходимо использовать PsTools, вы можете полностью игнорировать этот раздел, поскольку все должно работать нормально. Для тех, кто работает под управлением Windows 7, 8 или Vista в домашней среде или использует несколько компьютеров в офисе без домена, вам потребуется настроить контроль учетных записей на удаленном компьютере, чтобы PsTools работал правильно.

Проблема хорошо описана Microsoft :

Когда пользователь, являющийся членом группы локальных администраторов на целевом удаленном компьютере, устанавливает удаленное административное соединение, например, с помощью команды net use * \\ remotecomputer \ Share $, он не будет подключаться как полный администратор. У пользователя нет возможности повышения прав на удаленном компьютере, и он не может выполнять административные задачи.

Чтобы объяснить это по-другому, когда вы пытаетесь подключиться к другому компьютеру и запустить что-то, требующее доступа администратора, нет способа вызвать приглашение UAC и принять его с вашего компьютера, поэтому он не будет подключаться как администратор.

И это не плохо. Вы не должны изменять этот параметр, не понимая полностью, что вы разрешите распространению вредоносного ПО с одного компьютера на другой — при условии, что вредоносное ПО имеет ваше локальное имя пользователя и пароль, и тот же пароль, что и на другом компьютере, и Вредоносные программы — это хитрость, а большинство — нет. Но все же это не то, что нужно воспринимать легкомысленно

И снова, если вы находитесь в доменной среде, эта проблема не существует и не нуждается в изменении. И если вы просто тестируете с кучей виртуальных машин, вам не о чем беспокоиться.

Чтобы настроить UAC для запуска PsTools, вам нужно открыть редактор реестра и перейти к следующему ключу:

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \
Windows \ CurrentVersion \ Policies \ System

Когда вы окажетесь там, создайте новый 32-битный DWORD с правой стороны, присвойте ему имя LocalAccountTokenFilterPolicy и значение 1. Вам не нужно перезагружать компьютер, чтобы настройки вступили в силу.

Примечание: просто чтобы уточнить, этот параметр должен произойти на удаленном компьютере, к которому вы подключаетесь.

PsExec

PsExec, вероятно, является самым мощным инструментом в наборе, так как вы можете выполнить любую команду в локальной командной строке так же, как и на удаленном компьютере. Это включает в себя все, что можно запустить из командной строки — вы можете изменить параметры реестра, запустить сценарии и утилиты или подключиться с этого компьютера к другому. Вывод команд будет показан на вашем локальном ПК, а не на удаленном.

Синтаксис прост:

psexec \\ computername <параметры> apptorun.exe <аргументы>

Реально, однако, вы бы хотели также включить имя пользователя и пароль в командной строке. Например, чтобы подключиться к другому компьютеру и проверить список сетевых подключений, вы должны использовать что-то вроде этого:

psexec \\ имя_компьютера -u Пользователь -p Пароль ipconfig

Эта команда выдаст вывод, подобный следующему:


Если вы хотите передать вывод команды в другую команду или перенаправить вывод в файл, вы обычно просто делаете что-то вроде command.exe> ​​output.txt, и то же самое происходит с PsExec. Таким образом, команда, подобная следующей, сохранит вывод netstat -an в файл в корневом каталоге локального компьютера.

psexec \\ имя_компьютера netstat -an> C: \ connections.txt

Если вы хотите передать> или | символ через соединение PsExec с удаленным компьютером, вам нужно будет использовать символ ^, который является малоизвестным escape-символом в командной оболочке Windows. Это, конечно, означает, что нам на самом деле нужно будет использовать командную оболочку на удаленном компьютере, а не просто запустить процесс, поэтому мы можем в первую очередь выполнить перенаправление или конвейер. Таким образом, наша команда выглядит следующим образом (изменение пути к домашнему каталогу, в котором у нас есть права на запись).

psexec \\ имя_компьютера cmd / c netstat -an ^> C: \ users \ geek \ connections.txt

В этом примере список открытых подключений, сгенерированных netstat, помещается в домашний каталог пользователя на удаленном компьютере в файл с именем connections.txt.

Копирование программ на удаленный компьютер

Вы не ограничены только приложениями на удаленном ПК при использовании PsExec, и фактически вы можете запускать все, что у вас есть локально. Например, если вы хотите выполнить проверку удаленной системы с помощью командной строки Autoruns, но на локальном компьютере у вас был только файл autorunsc.exe, вы можете использовать ключ -c, чтобы скопировать приложение. PsExec удалит инструмент из удаленной системы после завершения команды.

Это важное время, чтобы упомянуть опцию -accepteula большинства инструментов SysInternals, которая обеспечит принятие лицензионного соглашения на компьютере, на котором была выполнена команда. Нам нужно добавить это в команду autorunsc.exe, иначе на удаленном компьютере произойдет сбой.

psexec \\ имя_компьютера -c autorunsc.exe -accepteula

Есть несколько других опций, которые определяют, будет ли приложение всегда копироваться, или его следует копировать, если локальное приложение имеет более высокую версию, чем удаленное. Вы можете просто запустить psexec из командной строки, чтобы увидеть эти опции.

Примечание. Если команда доступна только в командной строке, перед ней необходимо добавить cmd / c. Это включает в себя трубы и перенаправления, как | и>.

Взаимодействие с зарегистрированным пользователем на удаленном ПК

Вы можете использовать ключ -i, чтобы запустить приложение и позволить удаленному пользователю реально взаимодействовать с приложением. Возможно, вы захотите объединить это с ключом -d, который не ожидает завершения удаленного процесса, прежде чем PsExec вернет вам управление. Например, эта команда откроет окно «Блокнот» на удаленном компьютере:

psexec \\ имя_компьютера -d -i блокнот

Вы также можете выбрать запуск от имени пользователя SYSTEM с параметром -s, что может быть очень опасно. Например, если вы хотите открыть редактор реестра на своем компьютере, но с разрешениями уровня пользователя SYSTEM, вы можете запустить эту команду.

psexec -i -d -s regedit.exe

Если вам интересно, да, это даст вам доступ ко многим вещам, которые вы обычно не имеете права редактировать в реестре. И да, это действительно плохая идея.

Запуск полной командной строки через PsExec

Да, мы только что показали вам все эти примеры того, как выполнить одну команду через PsExec… и оказалось, что вы можете запустить полную оболочку на локальном компьютере, которая фактически работает на удаленном компьютере. Это как если бы вы были на консоли этого сервера (по большей части). И, к счастью, синтаксис для этого очень прост (добавьте имя пользователя, если вам нужно).

psexec \\ computername cmd.exe

После этого у вас будет командная строка, которая теперь запущена на удаленном ПК.

Командная строка будет работать почти так же, как обычно, за исключением того, что завершение табуляции не будет работать вообще, но это нас устраивает.

Стоит отметить, что если вы хотите запускать команды PowerShell удаленно на другом компьютере , вы можете сделать это изначально с некоторыми изменениями конфигурации. К сожалению, PowerShell не очень хорошо работает с PsExec, если вы не используете кучу странных обходных путей, которые не стоят.

Другие опции

У команды psexec есть множество других действительно полезных опций, которые вы можете использовать — каждый из них будет использоваться в пробеле сразу после \\ computername и перед любой из других команд. Так что подумайте: psexec \\ computername -option <удаленная команда>.

Если вы просто запустите команду psexec из командной строки без каких-либо дополнительных ключей, вы увидите их все.

PsFile

Эта команда показывает файлы, которые в данный момент открыты по сети на локальном или удаленном ПК, и работает аналогично команде Windows «net file». Синтаксис такой же, как и любая другая команда в наборе.

psfile \\ имя_компьютера

Да, этот не такой веселый, как последний.

Если вы хотите закрыть один из файлов и отключить человека от ресурса, вы можете закрыть соединение с помощью параметра -c, хотя это может привести к потере данных, поскольку файл не был закрыт должным образом.

psfile \\ имя_компьютера <путь> -c

PsGetSid

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

PsInfo

Эта команда перечисляет много полезной информации о системе, включая время работы, что очень весело. Вы можете запустить его локально, чтобы протестировать его, просто набрав psinfo в командной строке, предполагая, что ваши инструменты SysInternals находятся в пути.

Если вы хотите получить гораздо больше информации из PsInfo, и я знаю, что вы это делаете, то вы можете использовать следующие параметры для добавления информации о диске (-d) и исправлений (-h), а также списка установленных приложений и их версий ( -s).

psinfo -d -h -s

Это дает намного больше информации, даже на почти пустой виртуальной машине:

Вы также можете запустить PsInfo удаленно, добавив имя компьютера и, возможно, имя пользователя переключается … но есть одна большая проблема: он не будет работать, если не включена служба удаленного реестра. Перейдите в конец статьи, где мы поговорим о том, как включить его на удаленном компьютере.

PsKill

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

pskill \\ имя_компьютера <PID или имя>

Проблема с PsKill состоит в том, что в последних версиях Windows есть очень мощная утилита для уничтожения задач, встроенная прямо в систему под названием Taskkill, которая имеет гораздо больше функций.

PsList

Эта утилита очень проста, но довольно удобна для быстрого просмотра компьютера и определения, использует ли он слишком много ресурсов процессора или памяти. Вы можете указать имя или часть имени в командной строке, чтобы сузить список до проблемного приложения, и вы сможете увидеть почти всю информацию, включая потоки.

Примечание. Чтобы эта утилита работала на удаленном компьютере, вам нужно включить удаленную службу реестра. Обязательно прочитайте до конца урока, поскольку мы объясним, как с этим справиться позже.

PsLoggedOn

Эта утилита выводит список учетных записей, которые вошли в систему на компьютере или подключены удаленно. Это довольно просто и в значительной степени полезно в среде системного администратора.

PsLogList

Эта утилита отображает локальный или удаленный журнал событий в командной строке, и существует ряд опций, которые можно использовать для фильтрации данных.

psloglist \\ Компьютерная система

Есть также опции -h, -d и -m, которые позволяют сузить список событий до последних x часов, дней или минут. Опция -n отображает список записей x, а ключ -r меняет порядок, поэтому самые последние записи будут в нижней части вывода. Последний параметр, который мы установили в этом примере как «Система», на самом деле не нужен — если вы его опустите, системный журнал всегда будет извлечен, но вы можете изменить его на «Приложение» или «Безопасность», чтобы вместо этого получать эти журналы.

Стоит отметить, что если у вас есть доступ администратора к другому компьютеру, вы можете просто открыть Event Viewer и выбрать Connect из меню Action. Введите имя компьютера в списке, измените учетные данные, если вам нужно, и получите доступ к журналам событий таким образом.

Единственный сценарий, в котором мы действительно можем увидеть, что PsLogList действительно полезен, — это если вы хотите написать сценарий для выполнения действия в случае определенных сообщений в журнале событий.

PsPasswd

Эта утилита позволяет менять пароли для пользователей, как локальных, так и удаленных. Синтаксис такой же, как и все остальное:

pspasswd \\ computer -u пароль пользователя -p <AccountToChange> <новый пароль>

Преимущество этой утилиты по сравнению с использованием NET USER из обычной командной строки заключается в том, что вы можете менять пароли для нескольких компьютеров одновременно, и она работает и в доменной среде.

PsPing

Эта утилита пингует, проверяет порты и выполняет тестирование задержки и пропускной способности. Довольно просто

psping <имя_сервера>

Или вы можете проверить подключение к порту, добавив номер порта следующим образом:

psping <имя_сервера>: 80

У этой команды есть множество дополнительных параметров, которые вы, вероятно, захотите проверить, если вам понадобится устранить неполадки в сети.

PsService

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

psservice \\ имя_компьютера <команда> <аргументы>

Список команд можно найти, посмотрев на справку /? вариантов, но есть несколько вариантов, которые вы найдете больше, чем остальные.

  • query — Запрашивает статус сервиса
  • config — Запрашивает конфигурацию
  • setconfig — устанавливает конфигурацию
  • start — запускает службу
  • stop — останавливает службу
  • restart — останавливает, а затем перезапускает службу
  • пауза — приостановка обслуживания
  • продолжение — Продолжает приостановленный сервис
  • зависимость — перечисляет сервисы, которые зависят от указанного
  • find — ищет экземпляр службы в сети
  • security — сообщает о разрешениях безопасности, назначенных службе.

В частности, начало | остановить | пауза | перезапустить | Опции cont действительно просты и понятны. Например, в следующей команде вы можете заменить «запуск» любой из этих других команд.

psservice \\ computername start <имя_службы>

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

Примечание: встроенная утилита sc.exe имеет массу полезных функций, которые перекрываются с этой утилитой. Основное отличие заключается в том, что PsService немного более удобна для пользователя.

PsShutdown

Эта утилита позволяет выключить, выйти из системы или даже перевести компьютер в спящий режим. Проблема в том, что она не лучше встроенной утилиты shutdown.exe и фактически была разработана для Windows XP, поэтому в большинстве случаев рекомендуется использовать встроенную утилиту.

Единственная опция, которую PsShutdown предоставляет, которую вы не можете получить иным способом, — это ключ (-d) для перевода компьютера в спящий режим, что может быть удобно.

psshutdown \\ имя_компьютера -d

Вы также можете использовать опцию -h, чтобы перевести компьютер в режим гибернации.

PsSuspend

Эта утилита очень похожа на PsKill, но она делает то, чего не может встроенная утилита Taskkill — вы можете приостанавливать процессы, а не уничтожать их, что может быть очень удобно, если вы хотите временно остановить процесс, интенсивно использующий процессор, из работает, пока вы выполняете задачу системного администратора.

Приостановить процесс очень легко:

pssuspend \\ computer <PID или имя>

И возобновить этот процесс так же просто — все, что вам нужно сделать, это добавить ключ -r.

pssuspend \\ computer -r <PID или имя>

Когда утилиты не подключаются из-за удаленного реестра

Некоторые из этих утилит, включая PsInfo, PsList, PsLogList и PsLoggedOn, требуют, чтобы удаленная служба реестра была включена на удаленном компьютере, и она не включена по умолчанию в современных версиях Windows.

Хорошей новостью является то, что эту проблему легко устранить, и вам не нужно оставлять включенный удаленный реестр. Просто запустите эту команду, используя PsService, чтобы запустить службу:

psservice \\ computername start RemoteRegistry

И затем, когда вы закончите с тем, что вы делаете с PsInfo или PsList, вы можете снова остановить службу, используя эту команду:

psservice \\ computername stop RemoteRegistry

Простые решения — лучшие, не так ли?

Следующий урок

Обязательно присоединяйтесь к нам завтра, когда мы расскажем о файловых и дисковых утилитах и ​​еще нескольких интересных вещах.

Похожие посты
Как сделать

Как получить возмещение за покупки в iTunes или App Store

Как сделать

Поверхностное перо не работает? Вот как это исправить

Как сделать

Как настроить и использовать Fire TV Recast

Как сделать

Как изменить рингтон по умолчанию на вашем iPhone