Управление процессами с помощью PowerShell

Как посмотреть активные программы на компьютере

В статье описывается несколько способов, которые помогут отобразить список запущенных процессов в Windows. Операции производятся в Windows 10, но что-то сработает и в более ранних версиях.
Согласитесь, задача отобразить список запущенных процессов далеко не самая сложная. Однако подходы к её решению не обязательно должны быть стандартными. Информацию по процессам можно представить и в более комфортном виде, чем, например, через…

Чаще всего, кроме этого способа, пользователям больше ничего и не известно. Но, раз уж это так, значит, этого большинству из нас достаточно. Вызывается оный во всех последних версиях Windows просто – достаточно зажать три клавиши быстрого доступа:

Ctrl + Shift + Esc

Вкладка с процессами не изменилась со времён Windows XP:

Однако, если вы на К76, вам Диспетчера мало. Согласен, продолжаем.

Get-Process – получение списка запущенных процессов

Командлет Get-Process позволяет вывести список запущенных процессов на локальном компьютере.

Get-Process список запушенных процессов

По-умолчанию выводятся следующие свойства запущенных процессов:

  • Handles – количество дескрипторов ввода — вывода, которые отрыл данный процесс;
  • NPM(K) — Non-paged memory (невыгружаемый пул). Размер данных процесса (в Кб.), которые никогда не попадают в файл подкачки на диск;
  • PM(K) – размер памяти процесса, которая может быть выгружена на диск;
  • WS(K) – размер физической памяти в Кб, используемой процессом (working set).
  • CPU(s) – процессорное время, использованное процессом (учитывается время на всех CPU);
  • ID — идентификатор процесса;
  • SI (Session ID) – идентификатор сеанса процесса (0 — запущен для всех сессий, 1 – для первого залогиненого пользователя, 2 — для второго и т.д.);
  • ProcessName – имя процесса.

Чтобы получить все свойства нескольких процессов:

Get-Process winword, notep* | Format-List *

Можно вывести только определенный свойства процессов. Например, имя (ProcessName) время запуска (StartTime), заголовок окна процесса (MainWindowTitle), имя исполняемого файла (Path) и наименование разработчика (Company):

Get-Process winword, notep* | Select-Object ProcessName, StartTime, MainWindowTitle, Path, Company|ft

вывести подроюную информацию о запущенных процессах

Вывести список запущенных процессов пользователя с графическими окнами (в список не попадут фоновые и системные процессы):

Get-Process | Where-Object | Format-Table Id, Name, mainWindowtitle

Get-Process | Where-Object <<img src=

.mainWindowTitle — процессы с графическими окнами» width=»» />.mainWindowTitle — процессы с графическими окнами» width=»» />

С помощью параметра IncludeUserName можно вывести имя пользователя (владельца), который запустил процесс:

Get-Process -Name winword -IncludeUserName

С помощью Where-Object можно выбрать процессы в соответствии с заданными критериями. Например, выведем все процессы, которые используются более 200 Мб оперативной памяти, отсортируем процессы в порядке убывания используемого объема RAM, размер памяти из Кб преобразуем в Мб:

Get-Process найти процессы, которые занимают более 200 Мб оперативной памяти

Как мы уже говорили ранее командлет Get-Process в параметре CPU содержит время использования процессора конкретным процессом в секундах. Чтобы отобразить процент использования CPU процессами (по аналогии с Task Manager), используйте такую функцию:

function Get-CPUPercent
$CPUPercent = @Name = ‘CPUPercent’
Expression = $TotalSec = (New-TimeSpan -Start
[H1toH2]

Start-Process, Stop-Process: запуск и остановка процессов из PowerShell

Чтобы запустить новый процесс с помощью PowerShell используется команда:

Start-Process -FilePath notepad

Если каталог с исполняемым файлом отсутствует в переменной окружения $env:path, нужно указать полный путь к файлу:

Start-Process -FilePath ‘C:distrapp.exe’

Можно запустить программу и передать ей аргументы:

Start-Process -FilePath ping -ArgumentList «-n 10 192.168.1.11»

С помощью параметра WindowStyle вы можете задать режим запуска окна процесса (normal, minimized, maximized, hidden). Например, чтобы запустить программу в максимально развернуом окне и дождаться завершения процесса, выполните команду:

Start-Process -FilePath tracert -ArgumentList «192.168.1.11» –wait -windowstyle Maximized

С помощью командлета Stop-Process можно завершить любой процесс. Например, чтобы закрыть все запущенные процессы notepad:

Stop-Process -Name notepad

По-умолчанию не запрашивается подтверждение завершения процесса. Закрываются все процессы, которые соответствуют указанным критериям. Чтобы запросить подтверждение завершения для каждого процесса, добавьте –Confirm.

Stop-Process -Name notepad.exe -Confirm

Stop-Process завершить процесс powershell

(Get-Process -Name notepad).Kill()

Из PowerShell можно принудительно завершить все приложения, которые не отвечают диспетчеру процессов Windows:

Get-Process | where-object | Stop-Process


.StartTime).TotalSeconds
[Math]::Round( (

PowerShell: управление процессами на удаленном компьютере

С помощью аргумента ComputerName командлет Get-Process позволяет управлять процессами на удаленных компьютерах (должен быть включен и настроен WinRM).

Get-Process -ComputerName dc01, dc02| Format-Table -Property ProcessName, ID, MachineName

Мы рассматриваем встроенные возможности комнадлета Get-Process для управления процессами на удаленных компьютерах. Здесь не учитываются возможности PowerShell Remoting, которые доступны в командлетах Invoke-Command и Enter-PSSession.

Если вы хотите завершить процесс на удаленном компьютере, имейте в виду, что у командлета Stop-Process отсутствует параметр –ComputerName. Для завершения процесса на удаленном компьютере можно использовать такой PowerShell код:

$RProc = Get-Process -Name notepad -ComputerName dc01
Stop-Process -InputObject $RProc


.CPU * 100 / $TotalSec), 2)
>
>
Get-Process | Select-Object -Property Name, $CPUPercent, Description | Sort-Object -Property CPUPercent -Descending | Select-Object -First 20
>

PowerShellс скрипт с Get-Process выводит процент использования CPU процессами

Чтобы найти зависшие процессы (которые не отвечают), выполните команду:

[/H1toH2]

Список запущенных процессов из командной строки

В Windows есть встроенная командная утилита tasklist, отображающая список запущенных процессов на указанном компьютере. Как и многие другие в папке System32, tasklist принадлежит к числу административных утилит, которые могут смотреть запущенные процессы на удалённых машинах по сети. Для локального компьютера команда в консоли, запущенной от имени администратора, может, например, принять такой вид:

После этого на Рабочем столе появится текстовый файл:

список запущенных процессов из консоли cmd

в котором запущенные на момент исполнения команды будут представлены в удобочитаемом виде. Текстовый вывод не понимает кириллицы, так что я обычно использую специальные текстовые редакторы типа Notepad ++. Но, думаю, что в файле написано, понятно и так:

список процессов в текстовом файле

Или процессы можно представить в табличном формате; если есть Excel, можете просматривать процессы оттуда:

Для удалённого компьютера команда примет вид:

На этом можно было бы и закончить, но я продолжу аналогичным вариантом, откуда вы узнаете…

Dragokas

Very kind Developer

«Имя образа»,»PID»,»Имя сессии»,»№ сеанса»,»Память»,»Состояние»,»Пользователь»,»Время ЦП»,»Заголовок окна»

Сам не знал — оказывается иногда полезно писать FAQ

  • Заголовок окна
  • Время ЦП — это нечто, вроде общей затраченной процессором мощности на поддержание работы процесса.

/M — информация о том, функции из каких библиотек подгружены процессом*.
* для полной картины потребуется запуск Tasklist в режиме повышенных привилегий.

Можно задать фильтром интересующие,
например, можем узнать какие из процессов используют функции для подключения к сети Интернет, создания сокетов, передачи пакетов по лок. сети.

urlmon_svchost_details.png

Детальную информацию об всех экпортируемых библиотеками API-функциях можно получить через утилиту dumpbin из состава Microsoft Visual Studio.
Например:

Похожую информацию (tasklist /m) о используемых процессом библиотеках можно получить, на запуская сам процесс:

или без find, чтобы увидеть какие конкретно функции из библиотеки испольует.

Процессы удаленного компьютера:
/S Подключаемый удаленный компьютер.
/U [] Пользовательский контекст, в котором должна выполняться эта команда.
/P [] Пароль для этого пользовательского контекста. Запрашивает ввод пароля, если он не задан.

Встроенные фильтры:

Имя фильтра | Допустимые операторы | Допустимые значения
STATUS |eq, ne |RUNNING / NOT RESPONDING / UNKNOWN
IMAGENAME |eq, ne| Имя образа
PID |eq, ne, gt, lt, ge, le |Значение PID
SESSION |eq, ne, gt, lt, ge, le |Номер сессии
SESSIONNAME |eq, ne |Имя сессии
CPUTIME |eq, ne, gt, lt, ge, le |Время CPU в формате hh:mm:ss. hh — часы, mm — минуты, ss — секунды
MEMUSAGE |eq, ne, gt, lt, ge, le |Использование памяти в KБ
USERNAME |eq, ne |Имя пользователя в формате []
SERVICES |eq, ne |Имя службы
WINDOWTITLE |eq, ne |Название окна (допустима маска *)
MODULES |eq, ne |Имя DLL

Примечание: Фильтры «WINDOWTITLE» и «STATUS» не поддерживаются при опросе удаленного компьютера.

Например, показать зависшие процессы (в диспетчере задач «Не отвечает»):

Можно задавать сразу несколько фильтров,
например, показать процессы, использующие от 1 МБ до 10 МБ памяти:

Расшифровка условных операторов:
eq (equal) = равняется / соответсвует
ne (not equal) != не равняется
gt (greater then) > больше, чем
lt (less then) < меньше, чем
ge (great or equal) >= больше или равно
le (less or equal)

FC (File Compare)

14 команд CMD, которые должен знать каждый пользователь

Команда FC пригодится в основном кодерам, также она может использоваться теми юзерами, которым приходится работать с текстовыми файлами. Эта команда позволяет сравнивать содержимое двух файлов, отыскивая между ними несоответствия. Допустим, у вас имеются два файла file1.docx и file2.docx и вы хотите их сравнить. Выполните в консоли следующую команду:

fc /U «D:file1.docx» «D:file2.docx»

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

Примеры использования TASKLIST.

tasklist /? — выдать краткую справку по использованию команды.

tasklist — отобразить на экране консоли список процессов выполняющихся на локальном компьютере в данный момент времени. Пример отображаемой информации

Имя образа — имя исполняемого файла данного процесса. System Idle Process — это не имя образа, а индикация режима простоя, когда ни один из процессов не выполняется.

PID — уникальный идентификатор процесса. Присваивается процессу при его создании.

Имя сессии — имя сессии отображает признак Services — процесс запущен в качестве системной службы, Console — интерактивный пользовательский процесс, RDP-Tcp#n — процесс, созданный удаленным подключением по RDP ( клиентами служб терминалов) — .

№ сеанса — номер сеанса пользователя.

Память — объем используемой процессом памяти.

tasklist /FO LIST — то же, что и в предыдущем примере, но выводимые данные представлены в виде списка:

tasklist /FO CSV — отобразить список процессов в формате полей, разделяемых запятой:

tasklist /fo csv /nh — то же, что и в предыдущем примере, но строка заголовка с названием колонок не отображается ( 1-я строка ).

tasklist -S SERVER — отобразить список процессов выполняющихся на удаленном компьютере SERVER в данный момент времени.

tasklist /m wsock32.dll — отобразить список процессов, которые подгружают библиотеку wsock32.dll . Пример отображаемых результатов выполнения команды:

tasklist /m — если имя модуля не задано, то отображается весь список процессов, и по каждому процессу — весь список модулей. Пример результата выполнения команды:

tasklist /SVC — отобразить информацию о системных службах. Пример:

В колонке Службы отображается короткое имя службы, например, DcomLaunch — для Службы Терминалов

tasklist -s 192.168.0.1 -U mydomainadmin -P mypass /FI «memusage gt 10000» — отобразить список процессов, использующих более 10000кб ( 10 Мб) памяти на компьютере с IP-адресом 192.168.0.1 . При подключении к удаленному компьютеру используется имя пользователя admin в домене mydomain и пароль mypass

tasklist /fi «username ne NT AUTHORITYСистема» | more — отобразить список процессов, выполняющихся не от имени локальной системной учетной записи. Для некоторых версий Windows, вместо русского Система нужно использовать System . Команда объединена в цепочку с more для организации постраничного вывода на экран.

tasklist -s 192.168.0.110 -U mydomainadmin -P mypass /FI «sessionname eq RDP*» — отобразить список процессов на удаленном компьютере, созданных клиентами служб терминалов.

Кроме получения чисто справочной информации о выполняющихся в системе процессах, команда TASKLIST обычно используется как средство получения исходных данных для команды принудительного завершения процессов TASKKIll

Kill processes executed by a particular user

The command is similar to the previous case with one change. Instead of ‘imagename‘, now we use ‘username‘ in the filter argument.

We can get the remote processes list using tasklist command.
To get list of all the processes, the command is :

To list the processes running a particular image file:

Example: To get the list of processes running cmd.exe on the remote computer 10.132.79.23, the command is:

You are the real mvp.

Everything seems to be working but even when typing the correct password it keeps saying that the username or password is correct.

the correct name is Reception, ive tried it without the capitol R and ive also tried it the way specified below but i still keep getting the same error.

Any guess why its saying the username or password is incorrect?

Charles, have you tried it without the username option?

I don’t know if this will work but you can try the following:

That should specify the local user on the remote machine. I hope it helps!

Same issue as Charles for me. When typing the correct password it keeps saying that the username or password is correct.

tasklist /s SMA-ATTC /u Sylvie

Without username option the response is “ERROR: The RPC server is unavailable”

I has the same issue at first until I used the domain admin account, I know you’ve probably checked already but just make sure that account has admin rights. Also try opening cmd as administrator too.

I try to get the processes from remote machines and have no issue when the remote machine is a Windows 7 system. But for Windows 10 systems I always get the error that username or password is incorrect. My command is
TASKLIST /S machine /U user /P password /FO csv /FI “imagename eq javaw.exe”

The used user has admin privileges on the machine. I double checked the password many times, I also tried “/U .user” and I also tried starting the console with admin privileges. The result is always the same and I have this issue only with remote Windows 10 systems.

Any experience or hints with this constellation?

I am receiving message “can not sign into Google IMAP. I have used outlook kill.bat which was working but does not work anymore? Anybody knows how to fix this?

you can try way.

Using the IP as domain works if the user is LOCAL to the remote PC.

Probably the domain is something totally different, try to look into the PC properties to find out the domain and uses is as /U DOMAINUser

You mean when sm1 is not part of a domain…. please be precies.
You don’t need the /u domain user… you dont need to specify a user at all if it is not a terminalserver…

Как в PsExec запустить команду с аргументами

Аргументы программы достаточно указать через пробел после самой команды:

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

В этом примере выходные данные команды ipconfig сохраняются в файл с именем HACKWARE-SERVER_ifconfig.

Для вывода содержимого файла можно использовать команду Get-Content или её более короткий псевдоним cat:

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

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

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

psservice \ computername start RemoteRegistry

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

psservice \ computername stop RemoteRegistry

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

Оцените статью
Fobosworld.ru
Добавить комментарий

Adblock
detector