Файл: Руссинович М., Маргозис А. Утилиты Sysinternals. Справочник администратора 2012.pdf
Добавлен: 29.10.2018
Просмотров: 33052
Скачиваний: 742

PsTools
Глава 6 187
дения об одном или нескольких удаленных компьютерах. PsInfo не требует
прав администратора на локальном компьютере, но требует их на удаленных
системах.
Если добавить параметр –d, будет показана также информация о томах
дисков:
Volume Type Format Label Size Free Free
A: Removable 0.0%
C: Fixed NTFS 126.99 GB 123.34 GB 97.1%
D: CD-ROM CDFS VMCUEST 23.66 MB 0.0%
X: Remote NTFS 19.99 GB 13.35 GB 66.8%
В предыдущем примере у пользователя, запустившего PsInfo, был диск
X:, назначенный удаленному хранилищу файлов. При опросе удаленных
компьютеров PsInfo собирает информацию в контексте учетной записи си-
стемы, поэтому показываются только глобально видимые тома. Буквы, на-
значенные удаленным томам, входят сюда, только если они созданы в кон-
тексте учетной записи SYSTEM, что делает их видимыми всем процессам
компьютера.
Примечание PsInfo не различает подстановки, сделанные с помощью SUBST. Если
буква диска связана с локальным путем, она появится в списке как фиксированный
диск с теми же характеристиками, что и у реального тома.
Если указать параметр –h, будут перечислены исправления, установлен-
ные на целевой системе. Сведения об исправлениях собираются из несколь-
ких известных мест реестра, содержащих информацию об исправлениях
Windows и Internet Explorer.
Параметр –s сообщает об установленных приложениях в соответствии с
информацией для удаления приложений, хранящейся в реестре.
Можно получить выходные данные в виде значений, разделенных запя-
тыми (CSV-файла), добавив параметр –c. Результаты с каждого компьютера
выводятся в отдельной строке, что удобно для генерации электронной та-
блицы. Чтобы использовать другой символ-разделитель, добавьте параметр
–t, за которым укажите новый разделитель. Чтобы использовать в качестве
разделителя символ табуляции, укажите параметр \t:
psinfo -c -t \t
Если PsInfo выводит информацию о локальном компьютере или одном
удаленном компьютере, кодом выхода PsInfo будет номер пакета обновле-
ний, установленного в этой системе. При выводе информации о нескольких
системах, PsInfo возвращает обычный код успешного завершения или сбоя.
PsKill
PsKill — утилита командной строки для завершения процессов, заданных по
идентификатору или имени образа. Она также может завершать все произ-
SIN_ch_06.indd 187
27.12.2011 14:19:51

188 Часть
II
Работа с утилитами
водные процессы целевого процесса. Как и другие утилиты PsTools, PsKill
может завершать процессы и деревья процессов на удаленных компьютерах,
при необходимости используя альтернативные учетные данные.
Внимание! PsKill завершает процессы незамедлительно. Принудительное завер-
шение процесса не дает ему возможности корректно завершить работу и может при-
вести к потере данных или нестабильности системы. Кроме того, PsKill не показывает
дополнительных предупреждений, если попытаться завершить процесс, критически
важный для работы системы, такой как Csrss.exe. Завершение критически важного
процесса приводит к появлению «синего экрана» Windows.
Чтобы завершить процесс, укажите в командной строке PsKill его иден-
тификатор (PID) или имя образа. Если параметр можно интерпретировать
как десятичное число, он считается идентификатором; в противном случае
он считается именем образа. В имени образа не обязательно указывать рас-
ширение .exe, но в остальном оно должно быть точным — PsKill не прини-
мает символы подстановки. Если указать имя образа, PsKill попытается за-
вершить все процессы с таким именем.
Если имя образа является десятичным числом, включите в имя расшире-
ние .exe, чтобы этот параметр интерпретировался как имя, а не PID.
Если добавить параметр –t, будет завершено дерево процессов целевого
процесса или процессов. Дерево процессов целевого процесса — это сам этот
процесс и все созданные им процессы. Дерево процессов можно увидеть в
Process Explorer (см. гл. 3) или при помощи параметра –t, о котором гово-
рится далее в этой главе.
Для завершения процесса, работающего в том же контексте безопасности
на том же компьютере, что и PsKill, администраторские права не требуются,
но необходимы во всех остальных случаях.
Примечание Утилита PsKill была создана, когда в Windows было относительно не-
много утилит командной строки. В Windows XP появились утилиты Taskkill.exe и Tskill.
exe, предоставляющие все возможности PsKill и даже больше.
PsList
PsList, первая из написанных мной утилит PsTools, основана на утилите ps с
платформы UNIX. Она выводит список процессов и их характеристики, та-
кие как использование памяти и процессора. Также PsList может показывать
отношения родительских и дочерних процессов, выводить сведения для от-
дельных потоков и непрерывно обновляться в режиме диспетчера задач.
Сведения можно получать для локальных и удаленных процессов.
Для отображения информации о процессах локальной системы админи-
страторские права не требуются. По умолчанию для получения сведений об
удаленном компьютере Windows XP требуются администраторские права
на целевой системе. В Windows Vista и последующих версиях члены групп
Администраторы (Administrators), Пользователи монитора производи-
тельности (Performance Monitor Users) и Пользователи журнала произ-
SIN_ch_06.indd 188
27.12.2011 14:19:51

PsTools
Глава 6 189
водительности (Performance Log Users) могут выполнять PsList удаленно.
На целевом компьютере должна быть запущена служба Remote Registry
(Удаленный реестр).
При запуске без аргументов командной строки PsList выводит список
процессов, работающих на локальном компьютере, в порядке их запуска;
их идентификаторы (столбец с заголовком Pid); приоритет (Pri); число по-
токов (Thd); число описателей объектов ядра (Hnd); объем закрытой вир-
туальной памяти в килобайтах (Priv); общее время ЦП, занятое процессом;
время с момента запуска процесса.
Примечание PsList использует имя «Idle» для ссылки на псевдо-процесс, имеющий
PID 0, который в Process Explorer и других утилитах называется «System Idle Process»
(Процесс бездействия системы). Как и большинство других утилит для просмотра про-
цессов, PsList не идентифицирует отдельно псведо-процесс Interrupts (Прерывания),
который идентифицируется в Process Explorer, вместо этого приписывая его нагрузку
на ЦП процессу Idle.
Параметр –t отображает процессы в виде дерева аналогично Process
Explorer, где дочерние процессы расположены под родительскими с отсту-
пом от края. В древовидном представлении столбцы CPU Time (Время про-
цессора) и Elapsed Time (Затраченное время) не отображаются; вместо них
PsList показывает зарезервированную виртуальную память (VM) и рабочий
набор (WS) в килобайтах.
Параметр –m показывает для каждого процесса информацию, относя-
щуюся к памяти, а не к процессору. Показанные сведения включают заре-
зервированную виртуальную память (VM), размер рабочего набора (WS),
закрытую виртуальную память (Priv), пиковый объем закрытой виртуаль-
ной памяти за время жизни процесса (Priv Pk), страничные ошибки (Faults),
включая жесткие и мягкие сбои, а также размеры неподкачиваемого и под-
качиваемого пулов (NonP и Page, соответственно). Все размеры памяти по-
казаны в килобайтах.
Параметр –d показывает информацию о каждом потоке в системе. Потоки
группируются по процессам, которым принадлежат, и сортируются по вре-
мени запуска. Выводится идентификатор потока (Tid), приоритет потока
(Pri), число переключений контекста или число раз, когда поток начинал
выполнение на процессоре (Cswitch), текущее состояние потока (State),
время выполнения в режиме пользователя (User Time) и в режиме ядра
(Kernel Time), а также затраченное время (Elapsed Time) с момента начала
выполнения потока.
Параметр –x показывает информацию о процессоре, памяти и потоках
для каждого процесса. Параметры –m, -x и –d можно комбинировать, но
нельзя использовать вместе с параметром –t.
Можно отображать информацию об отдельных процессах, указав их
идентификаторы, частичные или точные имена. Следующая команда выво-
дит информацию о процессе с PID 560 на компьютере с именем Win7_vm:
pslist \\Win7_vm 560
SIN_ch_06.indd 189
27.12.2011 14:19:51

190 Часть
II
Работа с утилитами
Следующая команда отображает информацию о процессоре, потоках и
памяти для всех процессов, чье имя начинается с «svc»:
pslist –x svc
Параметр –e указывает, что введенное имя должно в точности соответ-
ствовать имени процесса. Если добавить этот параметр в предыдущий при-
мер, будут показаны только процессы svc.exe, но не экземпляры svchost.exe.
Параметр –s запускает PsList в режиме «диспетчера задач», в котором
экран консоли периодически очищается и обновляется последней инфор-
мацией. Список сортируется по столбцу CPU, в котором показан процент
времени ЦП, использованный каждым процессом с момента предыдущего
обновления. По умолчанию PsList обновляет экран один раз в секунду до
нажатия клавиши Escape. Можно указать длительность работы PsList, ука-
зав число секунд сразу после параметра –s, и изменить частоту обновления,
добавив параметр –r. В следующем примере PsList будет работать в режиме
диспетчера задач 60 секунд (или до нажатия Escape), обновляя экран каж-
дые пять секунд:
pslist -s 60 -r 5
Параметр –s можно комбинировать с параметром –m, чтобы просматри-
вать непрерывно обновляемые сведения о памяти и сортировать процессы
по закрытым байтам, а не использованию ЦП. Можно также комбинировать
–s и –t, чтобы просматривать обновляемые сведения о процессах в древо-
видном представлении, как в Process Explorer. Можно указать PID, частич-
ное или точное имя процесса, чтобы просматривать информацию о них в
режиме диспетчера задач. Если указывается PID, его лучше поставить перед
параметром –s, чтобы он не интерпретировался как число секунд работы.
Следующая команда позволяет непрерывно следить за использованием па-
мяти процессом leakyapp.exe на удаленном компьютере:
pslist \\Win7_vm -s -m -e leakyapp
PsLoggedOn
PsLoggedOn сообщает, кто вошел в систему на определенном компьютере
локально или удаленно. Можно также выяснить, на какие компьютеры в
сети вошел определенный пользователь.
При запуске без параметров командной строки эта утилита сообщает, ка-
кие пользователи и когда вошли локально на текущий компьютер. Затем она
сообщает, какие пользователи вошли через общие ресурсы, и в какое время
были начаты сеансы. (Последняя возможность похожа на работу команды
net session.)
Чтобы просмотреть эту информацию для удаленного компьютера, ука-
жите его имя в командной строке:
psloggedon \\Win7_vm
SIN_ch_06.indd 190
27.12.2011 14:19:51

PsTools
Глава 6 191
Для запуска PsLoggedOn на удаленном компьютере требуется учетная
запись с правами администратор. Это одна из утилит PsTools, не прини-
мающих параметры –u и –p для указания альтернативных учетных данных.
Поскольку PsLoggedOn использует для сбора информации на удаленном
компьютере службу Remote Registry, она всегда будет показывать подключе-
ние к общему ресурсу на компьютере, с которого получается информация.
Чтобы отображались только локальные входы в систему, но не подклю-
чения к общим ресурсам, добавьте в командную строку параметр –l (L в
нижнем регистре). Чтобы отображались только имена учетных записей, без
времени входа, добавьте параметр –x.
Если указать имя пользователя, а не компьютера, PsLoggedOn выпол-
нит поиск по всем компьютерам текущего домена или рабочей группы и
сообщит, на каких системах этот пользователь локально вошел в систему.
Обратите внимание: учетная запись, от имени которой запущена утилита,
должна иметь администраторские права на всех компьютерах сети, а поиск
может занимать много времени в крупных сетях и сетях с ограниченной про-
пускной способностью.
PsLoggedOn считает, что пользователь вошел в систему локально, если
его профиль загружен в реестр. Когда профиль загружается, SID пользовате-
ля появляется в разделе HKEY_USERS в качестве подраздела. PsLoggedOn
проверяет последнюю временную отметку подраздела с этим SID в качестве
имени, чтобы определить примерное время входа пользователя в систе-
му. Определенное время будет точным в большинстве случаев. Для полу-
чения более полной и точной информации о сеансах используйте утилиту
LogonSessions, описанную в главе 8.
PsLogList
PsLogList отображает записи из журналов событий локального или удален-
ных компьютеров. Можно фильтровать выходные данные по временным от-
меткам, источнику, идентификатору и другим условиям. Также эта утилита
позволяет экспортировать записи журнала в evt-файл, прочитать записи из
сохраненного evt-файла и очистить журнал событий.
При запуске без параметров PsLogList выгружает все записи из журна-
ла событий Система (System) локального компьютера. Чтобы просмотреть
записи из другого журнала событий, укажите его имя в командной строке.
Например, следующие команды выгружают записи из журнала Приложения
(Application) и журнала PowerShell, соответственно:
psloglist application
psloglist “Windows Powershell”
Чтобы просмотреть записи с одного или нескольких удаленных компьюте-
ров, укажите имена систем в командной строке, как описано в начале главы.
Каждая запись журнала событий включает источник события и иденти-
фикатор события. Идентификатор события используется для поиска и ото-
SIN_ch_06.indd 191
27.12.2011 14:19:51