PowerShell предоставляет широкие возможности управления процессами на локальном или удаленном компьютере. С помощью PowerShell можно получить список запущенных процессов, приостановить зависший процесс, найти процесс по заголовку окна, запустить новый процесс в скрытом или интерактивном режиме.
Список доступных командлетов управления процессами в Windows 10 можно вывести так:
Get-Command –Noun Process
Запуск и остановка процессов из PowerShell
Чтобы запустить новый процесс с помощью PowerShell используется команда:
Можно запустить программу и передать ей аргументы:
С помощью параметра WindowStyle вы можете задать режим запуска окна процесса (normal, minimized, maximized, hidden). Например, чтобы запустить программу в максимально развернуом окне и дождаться завершения процесса, выполните команду:
С помощью командлета Stop-Process можно завершить любой процесс. Например, чтобы закрыть все запущенные процессы notepad:
По-умолчанию не запрашивается подтверждение завершения процесса. Закрываются все процессы, которые соответствуют указанным критериям. Чтобы запросить подтверждение завершения для каждого процесса, добавьте –Confirm.
Из PowerShell можно принудительно завершить все приложения, которые не отвечают диспетчеру процессов Windows:
Start-Process -FilePath notepad
Если каталог с исполняемым файлом отсутствует в переменной окружения $env:path, нужно указать полный путь к файлу:
Start-Process -FilePath ‘C:distrapp.exe’
Start-Process -FilePath ping -ArgumentList “-n 10 192.168.1.11”
Start-Process -FilePath tracert -ArgumentList “192.168.1.11” –wait -windowstyle Maximized
Stop-Process -Name notepad
Stop-Process -Name notepad.exe -Confirm
Также завершить процесс можно так:
(Get-Process -Name notepad). Kill()
Kill remote process using process id.
The syntax for this case is as below
Kill remote process using image name
We can use filter option (/FI) to specify the image name. The syntax is as given below.
For example, if I need to kill all command window processes, I would run the below command.
If you need to kill outlook process, the command would be:
Kill processes executed by a particular user
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:
We can kill a process from GUI using Task manager. If you want to do the same from command line., then taskkill is the command you are looking for. This command has got options to kill a task/process either by using the process id or by the image file name.
Kill a process using image name
We can kill all the processes running a specific executable using the below command.
taskkill /IM executablename
Example:
Kill all processes running mspaint.exe:
Kill a process forcibly
taskkill /F /IM iexplore.exe
The above command would make all GUI windows disappear. You can restart explorer by running ‘explorer’ from cmd.
Kill a process with process id
We can use below command to kill a process using process id(pid).
taskkill /PID processId
Example:
Kill a process with pid 1234.
taskkill /PID 1234
Kill processes consuming high amount of memory
taskkill /FI “memusage gt value”
For example, to kill processes consuming more than 100 MB memory, we can run the below command
taskkill /FI “memusage gt 102400”
More examples
Sometimes applications get into hung state when they are overloaded or if the system is running with low available memory. When we can’t get the application to usable state, and closing the application does not work, what we usually tend to do is kill the task/process. This can be simply done using taskkill command.
To kill Chrome browser from CMD
Taskkill /F /IM Chrome.exe
Kill Chromedirver from command line
Taskkill /F /IM Chromedriver.exe
To kill firefox browser application
taskkill /F /IM firefox.exe
To kill MS Word application(Don’t do this if you haven’t saved your work)
taskkill /F /IM WinWord.exe
Sometimes, the command window itself might not be responding. You can open a new command window and kill all the command windows
taskkill /F /IM cmd.exe
This even kills the current command window from which you have triggered the command.
Формат командной строки:
Описание параметров командной строки :
/P пароль – Пароль для этого пользовательского контекста. Запрашивается, если он не задан.
/FI фильтр – Применение фильтра для выбора набора задач. Разрешение использовать “*”. Пример, imagename eq acme*
/PID процесс – Идентификатор процесса, который требуется завершить. Используйте TaskList, чтобы получить PID.
/IM образ – Имя образа процесса, который требуется завершить. Знак подстановки “*” может быть использован для указания всех заданий или имен образов.
/T – Завершение указанного процесса и всех его дочерних процессов.
/F – Принудительное завершение процесса.
/? – Вывод справки по использованию.
1) Символ ‘*’ для параметра /IM применим только совместно с фильтрами.
2) Завершение удаленных процессов всегда будет принудительным (/F).
3) Фильтры “WINDOWTITLE” и “STATUS” не принимаются во внимание, когда компьютер является удаленным.
Примеры использования TASKKILL.
TASKKILL /IM notepad.exe – завершить процесс, исполняемым образом которого является notepad.exe . Если таких
процессов более одного – то будут завершены все.
taskkill /PID 1234 /T – завершить процесс с идентификатором 1234 и все его дочерние процессы ( /T ) . Одной командой
можно завершить несколько процессов, задавая их PID – taskkill /PID 1234 /PID 2345 /PID 800. Для определения идентификатора
процессов используется команда tasklist :
notepad.exe 824 Console 1 3 916 КБ
notepad.exe 3004 Console 1 18 812 КБ
Где 824 и 3004 – это идентификаторы процессов PID
TASKKILL /F /FI “PID ge 2000” /FI “WINDOWTITLE eq Arc*” – принудительно (/F) завершить процесс, идентификатор которого
больше или равен 2000 и заголовок окна которого , начинается с текста Arc
При завершении процессов как локально, так и удаленно, результат выполнения команды TASKKILL зависит от прав пользователя,
в контексте учетной записи которого выполняется команда.
Для использования в многопользовательской конфигурации системы, например на сервере терминалов, вместо команды TASKKILL, удобнее и безопаснее
использовать команду TSKILL, адаптированную для завершения процессов в среде конкретных пользователей удаленного рабочего стола (RDP).
Весь список команд CMD Windows
Команда TSKILL похожа на команду TASKKILL но более адаптирована для использования на сервере терминалов Microsoft. При большом количестве удаленных пользователей, данная команда удобнее, чем TASKKILL поскольку имеет параметры командной строки для использования по отношению к сеансам удаленного рабочего стола.
Параметры командной строки:
id процесса – уникальный идентификатор процесса.
имя процесса – имя процесса, как правило – имя исполняемого файла без расширения, например – Firefox.
/SERVER:сервер терминалов – имя или адрес сервера терминалов.
id сеанса – идентификатор сеанса, уникальный для каждого подключения к удаленному рабочему стола по протоколу RDP (Remote Desktop Protocol).
/A – Прекратить процесс, выполняемый во всех сеансах.
/V – Отображение информации о выполненных действиях.
Идентификаторы сеансов пользователей можно определить с помощью команды QUERY:
query session – отобразить сведения о пользовательских сеансах. Пример отображаемой информации:
СЕАНС ПОЛЬЗОВАТЕЛЬ ID СТАТУС ТИП
Для получения списка сеансов пользователей на удаленном сервере терминалов используется команда:
query session /server:winsrv2016 – получить информацию о сеансах пользователей с сервера winsrv2016.
Для выполнения данной команды требуются права администратора по отношению к удаленной системе и некоторые настройки безопасности, приведенные на странице с описанием команды QUERY.
Примеры использования TSKILL:
tskill.exe 2425 – уничтожить процесс с идентификатором 2425. Идентификаторы процессов можно получить с помощью команды TASKLIST
tskill.exe Firefox – завершить процесс с именем Firefox. Процесс с указанным именем будет завершен только для сеанса текущего пользователя. Все прочие процессы с таким же именем, существующие в сеансах других пользователей сервера терминалов не будут затронуты. При использовании команды TSKKILL для завершения процесса по имени, при наличии соответствующих прав, локальный администратор завершит процесс не только для себя, но и для всех пользователей удаленного рабочего стола.
tskill firefox /server:win10 /A – завершить процесс firefox для всех сеансов пользователей на сервере win10 Процесс будет завершен не только в среде сеансов пользователей удаленного рабочего стола, но и в среде локального пользователя.
Команда TASKKILL используется для завершения процессов по идентификаторам или именам исполняемых файлов на локальной или удаленной системе. Используется в операционных системах Windows XP и старше.
Команда taskkill позволяет завершить вышедший из под контроля процесс в Windows 7, если Диспетчер задач Windows 7 (Task Manager) не справляется с этой задачей.
Иногда возникает необходимость вручную завершить процесс, который не отвечает. В большинстве случаев это можно сделать с помощью Диспетчера задач Windows, однако порой ему не удается справиться с вышедшим из под контроля приложением. Мне часто приходилось сталкиваться с этим при попытке завершить процесс Acronis. В такой ситуации я обычно использую более мощный инструмент — команду taskkill.
Использование команды taskkill
Общий синтаксис команды выглядит следующим образом:
Разумеется, для taskkill доступен широкий выбор опций. Перечислю лишь наиболее полезные из них:
• /s КОМПЬЮТЕР, где КОМПЬЮТЕР — это IP или адрес удаленного компьютера. По умолчанию, операция выполняется в локальной системе. Если именно это вас и интересует, данную опцию можно не использовать.
• /u ДОМЕНПОЛЬЗОВАТЕЛЬ, где ДОМЕН — это имя домена, а ПОЛЬЗОВАТЕЛЬ — имя пользователя, для которого нужно выполнить команду. Данная опция позволяет запускать taskkill с правами определенной учетной записи или домена.
• /p — обязательно используется в сочетании с опцией /u для указания пароля к учетной записи пользователя.
• /fi — позволяет выполнять команду taskkill с определенными фильтрами.
• /f — принудительно завершает выполнение команды.
• /IM — позволяет использовать имя приложения вместо идентификатора процесса.
Ну и разумеется, одна из самых полезных опций — переключатель для вызова справки (рис. В):
Рисунок B. Вывод справочной информации по команде taskkill при использовании переключателя справки.
Завершение процесса по имени приложения
Проще всего завершить вышедший из-под контроля процесс, воспользовавшись командой taskkill с использованием опции /IM. Выглядеть это будет так:
Здесь ИМЯ_ПРИЛОЖЕНИЯ — это имя процесса, который требуется завершить. К примеру, если Outlook не удается закрыть, можно воспользоваться следующей командой:
Завершение процесса по идентификатора
Если вы не знаете имени процесса, но знаете его идентификатор (PID) — например, 572 — можно воспользоваться следующей командой:
Завершение всех процессов для определенной учетной записи
Существует также возможность завершить все процессы для определенной учетной записи. Это особенно актуально, если совершенно точно известно, что проблема связана с определенной учетной записью, или если пользователь уже вышел из системы, а запущенные им процессы перестали отвечать. В таком случае можно воспользоваться следующей командой:
Завершение процессов на удаленном компьютере
Еще одна удобная возможность — завершение процессов в удаленном режиме. Допустим, вы точно знаете, что система не отвечает из-за определенного процесса (возьмем для примера все тот же Outlook). В таком случае можно воспользоваться другим компьютером и выполнить следующую команду:
Команда taskkill — весьма мощный и функциональный инструмент, способный избавить от необходимости принудительной перезагрузки компьютера. Умелое использование этой команды в сочетании с Диспетчером задач продлевает время безотказной работы системы и даже позволяет бороться с вирусами, руткитами или троянцами.
Команда TASKLIST – отобразить список задач на локальном или удаленном компьютере.
tasklist /? – выдать краткую справку по использованию команды.
tasklist – отобразить на экране консоли список процессов выполняющихся на локальном компьютере в данный момент времени. Пример отображаемой информации
Имя образа PID Имя сессии № сеанса Память
System Idle Process 0 Services 0 16 КБ
System 4 Services 0 244 КБ
smss.exe 316 Services 0 812 КБ
csrss.exe 432 Services 0 3 192 КБ
wininit.exe 468 Services 0 3 688 КБ
. . .
firefox.exe 3268 Console 1 104 252 КБ
cmd.exe 2940 Console 1 2 636 КБ
tasklist.exe 2084 Console 1 4 756 КБ
. . .
explorer.exe 2536 RDP-Tcp#1 1 17 336 КБ
Имя образа – имя исполняемого файла данного процесса.
System Idle Process – это не имя образа, а
индикация режима простоя, когда ни один из процессов
не выполняется.
PID – уникальный идентификатор процесса. Присваивается процессу при его создании.
Имя сессии – имя сессии отображает признак Services – процесс запущен в качестве системной службы, Console – интерактивный пользовательский процесс, RDP-Tcp#n – процесс, созданный удаленным подключением по RDP ( клиентами служб терминалов) – .
№ сеанса – номер сеанса пользователя.
Память – объем используемой процессом памяти.
tasklist /FO LIST – то же, что и в предыдущем примере, но выводимые данные представлены в виде списка:
Имя образа: System Idle Process
PID: 0
Имя сессии: Services
№ сеанса: 0
Память: 16 КБ
Имя образа: System
PID: 4
Имя сессии: Services
№ сеанса: 0
Память: 244 КБ
tasklist /FO CSV – отобразить список процессов в формате полей, разделяемых запятой:
“Имя образа”, “PID”, “Имя сессии”, “№ сеанса”, “Память”
“System Idle Process”, “0”, “Services”, “0”, “16 КБ”
“System”, “4”, “Services”, “0”, “244 КБ”
“smss.exe”, “316”, “Services”, “0”, “812 КБ”
“csrss.exe”, “432”, “Services”, “0”, “3 192 КБ”
tasklist /fo csv /nh – то же, что и в предыдущем примере, но строка заголовка с
названием колонок не отображается ( 1-я строка ).
tasklist -S SERVER – отобразить список процессов выполняющихся на удаленном
компьютере SERVER в данный момент времени.
tasklist /m wsock32.dll – отобразить список процессов, которые подгружают библиотеку wsock32.dll. Пример отображаемых результатов выполнения команды:
Имя образа PID Модули
AvastSvc.exe 1456 WSOCK32.dll
AvastUI.exe 2252 WSOCK32.dll
firefox.exe 3268 WSOCK32.dll
tasklist /m – если имя модуля не задано, то отображается весь список процессов, и по каждому процессу – весь список модулей. Пример результата выполнения команды:
tasklist /SVC – отобразить информацию о системных службах. Пример:
Имя образа PID Службы
System Idle Process 0 Н/Д
System 4 Н/Д
smss.exe 316 Н/Д
csrss.exe 432 Н/Д
wininit.exe 468 Н/Д
csrss.exe 488 Н/Д
services.exe 536 Н/Д
lsass.exe 556 KeyIso, SamSs
lsm.exe 564 Н/Д
winlogon.exe 616 Н/Д
svchost.exe 708 DcomLaunch, PlugPlay, Power
svchost.exe 804 RpcEptMapper, RpcSs
svchost.exe 868 Audiosrv, Dhcp, lmhosts
svchost.exe 960 AudioEndpointBuilder, CscService, Netman,
PcaSvc, SysMain, TrkWks, UmRdpService,
UxSms, Wlansvc, wudfsvc
svchost.exe 988 Appinfo, BITS, CertPropSvc, EapHost, gpsvc,
IKEEXT, iphlpsvc, LanmanServer, ProfSvc,
Schedule, SENS, SessionEnv,
ShellHWDetection, Themes, Winmgmt
В колонке Службы отображается короткое имя службы, например, DcomLaunch – для Службы Терминалов
Кроме получения чисто справочной информации о выполняющихся в системе процессах, команда TASKLIST обычно используется как средство получения исходных данных
для команды принудительного завершения процессов TASKKIll
Управление процессами на удаленном компьютере
С помощью аргумента ComputerName командлет Get-Process позволяет управлять процессами на удаленных компьютерах (должен быть включен и настроен WinRM).
Мы рассматриваем встроенные возможности комнадлета Get-Process для управления процессами на удаленных компьютерах. Здесь не учитываются возможности PowerShell Remoting, которые доступны в командлетах Invoke-Command и Enter-PSSession.
Если вы хотите завершить процесс на удаленном компьютере, имейте в виду, что у командлета Stop-Process отсутствует параметр –ComputerName. Для завершения процесса на удаленном компьютере можно использовать такой PowerShell код:
$RProc = Get-Process -Name notepad -ComputerName dc01Stop-Process -InputObject $RProc
Чтобы завершить процессы с идентификаторами 1230, 1241 и 1253, введите:
Чтобы принудительно завершить процесс Notepad.exe если он был запущен системой, введите:
Чтобы завершить все процессы на удаленном компьютере срвмаин с именем образа, начинающимся с заметки, используя учетные данные для хироплн учетной записи пользователя, введите:
Чтобы завершить процесс с ИДЕНТИФИКАТОРом 2134 и любыми его дочерними процессами, но только в том случае, если эти процессы были запущены учетной записью администратора, введите:
Чтобы завершить все процессы с ИДЕНТИФИКАТОРом процесса, который больше или равен 1000, независимо от имен их образов, введите:
Управление процессами с помощью PowerShell
Область применения: Windows Server 2022, Windows Server 2019, Windows Server 2016, Windows Server 2012 R2, Windows Server 2012
Завершает одну или несколько задач или процессов. Процессы могут быть завершены по ИДЕНТИФИКАТОРу процесса или имени образа. Команду tasklist можно использовать для определения идентификатора процесса (PID) процесса, который должен быть завершен.
Синтаксис
Указывает идентификатор процесса для завершения процесса. применим Указывает имя образа процесса, который должен быть завершен. Используйте подстановочный знак ( * ), чтобы указать все имена изображений. /f Указывает, что процессы принудительно завершены. Этот параметр не учитывается для удаленных процессов; все удаленные процессы принудительно завершены. /t Завершает указанный процесс и все дочерние процессы, запущенные этим процессом.
Имена фильтров, операторы и значения
Фильтры WINDOWTITLE и состояния не поддерживаются, если указана удаленная система.
Подстановочный знак ( * ) принимается для */im параметра, только если применяется фильтр.
Указание имени компьютера для фильтра имени узла приводит к завершению работы и остановке всех процессов.
Get-Process – получение списка запущенных процессов
Командлет
Get-Process
позволяет вывести список запущенных процессов на локальном компьютере.
По-умолчанию выводятся следующие свойства запущенных процессов:
Чтобы получить все свойства нескольких процессов:
Можно вывести только определенный свойства процессов. Например, имя (ProcessName) время запуска (StartTime), заголовок окна процесса (MainWindowTitle), имя исполняемого файла (Path) и наименование разработчика (Company):
Вывести список запущенных процессов пользователя с графическими окнами (в список не попадут фоновые и системные процессы):
С помощью Where-Object можно выбрать процессы в соответствии с заданными критериями. Например, выведем все процессы, которые используются более 200 Мб оперативной памяти, отсортируем процессы в порядке убывания используемого объема RAM, размер памяти из Кб преобразуем в Мб:
Как мы уже говорили ранее командлет Get-Process в параметре CPU содержит время использования процессора конкретным процессом в секундах. Чтобы отобразить процент использования CPU процессами (по аналогии с Task Manager), используйте такую функцию:
Чтобы найти зависшие процессы (которые не отвечают), выполните команду:
Завершение процесса программы с помощью командной строки
Завершение зависшего приложения мы обычно выполняем, вызвав Диспетчер задач, после чего находим в списке зависшее приложение и выполняем его завершение. Этот способ использует большинство пользователей, и многих он устраивает полностью. Но бывают ситуации, когда одного Диспетчера задач для завершения процесса недостаточно. Например, вам требуется завершить не только сам процесс, но и связанные с ним другие запущенные процессы. В таком случае некоторые предпочитают установить специальные приложения, которые расширяют возможности Диспетчера задач, а некоторые предпочитают использовать командную строку. Причем с помощью командной строки можно завершать приложения не только на текущем компьютере, но и на удаленном.
Как завершить процесс с помощью командной строки
Через командную строку можно завершить дочерние процессы, для этого используют флаг /T:
Завершить процесс можно и на удаленном компьютере.
Команда TASKKILL позволяет использовать фильтры и вместо части имен процессов указывать знак «*», чтобы завершать процессы по маске. Например, вам необходимо завершить все процессы, начинающиеся на eng, тогда введите:
Всё что прописано выше для большинство пользователей трудновато. Можно сделать это гораздо проще: создать ярлык, после нажатия на который будут убиватся все зависшие задачи. Далее читаем пошаговую инструкцию действий.
taskkill.exe /f /fi «status eq not responding»
Запустите командную строку через меню или воспользуйтесь инструментом , введя в строку . Команда, которая выполняет завершение процесса, называется , еще ее называют
позволяет завершить не только процесс по его имени, но и по номеру идентификатора процесса.
Чтобы завершить приложение по имени его процесса необходимо знать имя этого процесса. В большинстве случаев имя процесса совпадает с именем исполняемого файла. Например, для завершения процесса браузера Opera в командной строке введите:
TASKKILL /IM opera.exe
Если вы откроете «Диспетчер задач» и посмотрите на процессы, работающие в данный момент, то можете заметить, что в списке могут находиться несколько одноименных процессов, например Чтобы завершить не все процессы с одноименным именем, а только один из них следует использовать номер идентификатор процесса или PID. Чтобы узнать PID процессов, необходимо в командной строке ввести команду , которая высветит список всех процессов с их PID.
Для завершения процесса по его PID введите в командную строку:
TASKKILL /PID 192
где 192 номер PID процесса.
TASKKILL /IM svchost.exe /T
Все процессы, которые были связаны с завершаемым процессом, также будут завершены, если это возможно.
Для этого вам необходимо только знать сетевой адрес компьютера имя и пароль пользовательской учетной записи клиента. Например:
Команда TASKKILL позволяет использовать фильтры и вместо части имен процессов указывать знак «*», чтобы завершать процессы по маске.
Например, вам необходимо завершить все процессы, начинающиеся на eng, тогда введите:
TASKKILL /FI “IMAGENAME eq eng*”
Здесь /FI обозначает, что используется фильтр. После фильтра указывается IMAGENAME – имя образа процесса, eq – эквивалентно, то есть соответствует, начинается с eng*, команда воспримет знак «*» как любые символы после eng.
В качестве фильтра можно использовать не только имя процесса, но и его PID, имя пользователя, заголовок окна, имя службы и другие. Для справки по фильтрам команда TASKKILL введите в командной строке:
Таким образом, командная строка имеет существенно большие возможности по завершению процессов, позволяет автоматизировать этот процесс и работать с удаленными компьютерами. Причем все это достигается без установки какого-либо дополнительного программного обеспечения.
На этом все. Спасибо, что прочитали статью. Надеюсь, она была Вам полезна.
Внимание! Копирование данного материала запрещено без указания на главную страницу веб-сайта https://setupcomp.ru
Командлет Get-Process позволяет вывести список запущенных процессов на локальном компьютере.