Calcweb.ru

Информационный портал
4 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Как с помощью PowerShell завершать процессы в Windows 10

Как работать с процессами в Powershell используя Get и Start-Proccess

Работа с процессами Powershell Start-Process и управление ими на примерах

Процессы — это один из основных компонентов Windows и чаще всего мы работаем с ними через Task Manager (диспетчер задач), но эта возможность становится весомее если мы используем команды по управлению процессами в Powershell. Основные команды по управлению запущенными задачами можно увидеть так:

Мы получим следующий вывод:

  • Debug-Process — возможность мониторинга и отладки процессов. Для его работы нужно загрузить дополнительное ПО.
  • Get-Process — получение в Powershell списка процессов.
  • Start-Process — запуск процессов.
  • Stop-Process — убивает (завершает) процесс.
  • Wait-Process — ожидание окончания процесса.

Таких команд и вариантов их использования очень много. Например мы можем работать с процессами через WMI или использовать их в связке с мониторингом сетевых подключений через Get-NetTCPConnection.

Получив список процессов в Powershell можно увидеть что значения отображаются в Кб:

Изменить это можно через выражения:

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

Powershell свойства процессов

Каждое это свойство можно вызвать так:

Можно вызвать все свойства всех процессов или по одному выбранному:

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

Методы полезны тем, что ими можно воспользоваться не прибегая к дополнительным командам. Для примера так мы можем остановить процесс notepad (блокнот) тремя разными способами:

Методы .NET не всегда так очевидны, как командлеты поэтому к ним нужно прибегать с осторожностью.

При получении списка процессов есть параметр, который выводит путь откуда запущен процесс и версию файла:

В варианте выше у нас будет много не критичных ошибок:

  • Get-Process : Не удалось перечислить информацию о версиях файла для процесса "svchost".
  • Get-Process : Cannot enumerate the file version information of the "csrss" process.

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

Или запросить информацию о конкретном процессе:

powershell процессы

Ключ FileVersionInfo это три свойства: Product, FileVersion и Path каждый из которых можно вывести отдельно. Получим процессы в Powershell со свойством времени запуска и отсортируем их:

Если нужно выяснить когда и кто запустил процесс нужно добавить параметр IncludeUserName. В моем примере это два процесса:

Эти же команды можно выполнять удаленно. Во всех командах Powershell, где есть ключ ComputerName можно указать минимум один удаленный компьютер:

Выполняя удаленную команду вы можете получить две ошибки. Первую, если у вас не настроена возможность удаленного управления в Powershell. И вторая, если вы укажете ключ -IncludeUserName, почему-то он не работает совместно с ComputerName:

  • Get-Process : Parameter set cannot be resolved using the specified named parameters.

Запуск процессов с Powershell Start-Process

На примере запуска блокнота команда выполняется так:

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

Если в программа может принимать аргументы их так же можно добавить:

По умолчанию окно процесса разворачивается. Если хотите запустить свернутым, то добавьте ключ WindowStyle:

Ключ WindowStyle принимает 4 значения:

  • minimized — свернутый вариант.
  • hidden — скрытый режим.
  • normal — обычный.
  • maximized — полностью развернутый.

Добавив ключ NoNewWindow, в случае с tracert, команда выполнится в текущем окне:

powershell start processЕсли мы запускаем процесс, который подразумевает вывод, но не хотим открывать окно программы, то нам понадобится перенаправить вывод команд. Для этого есть два ключа:

  • RedirectStandardOutput — перенаправляет вывод
  • RedirectStandardError — перенаправляет ошибки
  • RedirectStandardInput — перенаправляет ввод

Воспользоваться этими ключами можно так:

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

Отмечу, что ни одна команда PS не позволяет запускать процессы в интерактивном сеансе пользователя (например открыть пользователю Excel). Если вы хотите использовать такой метод, то вам нужно использовать psexec от SysInternals либо помещать задачи в планировщик и выполнять оттуда.

Читайте так же:
Oldpiratebay — реинкарнация The Pirate Bay

Пример по работе с процессами в Powershell

Директории, откуда работает основная часть программ относятся к Windows и Program Files. Работа программ из Application Data, например, всегда подозрительна. Мы можем мониторить запуск процессов из этой директории. Нам нужно объявить переменные с путями, которые не будут вызывать подозрений и проверять путь процессов на вхождение:

process powershell

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

Обратите внимание, что все файлы с ошибками будут сохраняться с именем компьютеров на котором запущен скрипт. В каждом из скриптов я так же ставил знак *, это связано не с точным вхождением. Например в первом случае после пути C:Users* мы ожидаем еще символы и установив звездочку мы это указали. В случае Get-ChildItem ситуация похожая, но более подробно мы обсуждали в статье поиск файлов в Powershell.

Мы можем использовать поиск процессов не относящихся к производителям ПО, которые мы устанавливали на ПК пользователей. Для этого есть свойство Company. Не все объекты имеют имя компании, они связаны с задачами операционной системы:

powershell список процессов

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

Управляем службами Windows с помощью PowerShell. Часть 2

Так как команда для получения статуса службы называется Get-Service, догадаться о том, как пишутся другие команды не составит труда. На худой конец мы можем спросить у PowerShell обо всех командах, так или иначе относящихся к работе со службами. Обратите внимание, что мы использовали параметр –noun для получения всех команд, связанных со службами.

Взглянем на эти команды внимательнее.

STOP-SERVICE

Чтобы остановить службу, мы должны уточнить ее имя.

Однако в конвейер ничего не будет передано. Некоторые командлеты, такие как Stop-Service, созданы таким образом, что по умолчанию они не записывают объект в конвейер. Мы же заставим это сделать, использовав параметр –Passthru.

Если служба не запущена, то командлет ничего не выведет, равно как и не выдаст никакой ошибки. Поэтому иногда лучше передать объект в Stop-Service (естественно использовав при этом параметр –whatif).

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

Как я уже упомянул выше, если служба уже остановлена, то командлет ничего не сделает. И использование Stop-Service в этом случае никому не навредит. Однако я все же предпочитают более цивилизованный подход, а именно:

Если служба запущена, то объект передается в конвейер и отправляется в Stop-Service. Ниже приведен вариант с остановкой нескольких служб.

Некоторые службы не захотят останавливаться – в силу наличия зависимых служб – что мы и видим на скриншоте ниже.

В таком случае используем параметр –Force. В большинстве случаев это работает, но без “защиты от дурака”. Помните, что команда также остановит зависимые службы.

START-SERVICE

Запуск службы осуществляется аналогичным образом. Он поддерживает параметр –Whatif, и вам придется использовать –Passthru, чтобы увидеть объекты.

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

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

Мы должны явно получить зависимые службы, потому что Start-Service не запустит автоматически их.

RESTART-SERVICE

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

Читайте так же:
PhoXo — графический редактор для новичков

Так как мы осуществляем остановку службы, нам может понадобиться параметр –Force.

ПРИОСТАНОВКА И ВОЗОБНОВЛЕНИЕ РАБОТЫ

Работа некоторых служб может быть приостановлена на некоторое время, а затем возобновлена, и мы можем это сделать через PowerShell. Однако если служба не удовлетворяет требованиям, мы получим такие ошибки. (на примере показано, что мы пытались приостановить службу bits)

В чем же проблема? Смотрим на объект (используя Get-Service).

Если значение свойства CanPauseAndContinue равно True, значит мы можем приостанавливать и возобновлять работу службы. Найдем такие службы:

Как мы видим, не так много служб удовлетворяют этому требованию.

Готовы возобновить работу службы? Используйте следующее выражение:

Оба командлета также поддерживают –Whatif.

УДАЛЕННЫЕ СЛУЖБЫ

Как вы могли обратить внимание, все примере выше мы демонстрировали на локальном машине. И это неслучайно. К сожалению даже в PowerShell v3, ни у одного из этих командлетов нет параметра, который позволял бы управлять службой на удаленном компьютере. Get-Service, конечно, поддерживает параметр –Computername, но не более. Службу лицезреть вы сможете, а что-либо с ней сделать не получится. Нет, можно, конечно, если удаленный компьютер работает с PS v2 и включен PowerShell Remoting. Тогда мы можете использовать все выше приведенные команды, используя Invoke-Command для удаленного компьютера или PSSession. С другой стороны, проще управлять одной службой на нескольких серверах.

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

УСТАНАВЛИВАЕМ УДАЛЕННЫЙ СТАТУС

Итак, мы выяснили, что у командлета Stop-Service отсутствует такой полезный параметр как –Computername. Мы можете использовать эти команды в удаленной сессии, обратившись к командлету Invoke-Command, что уже само по себе продуктивно, если вы работаете со службой на нескольких компьютерах. Одно можно запускать, останавливать, перезапускать, ставить на паузу и запускать заново, используя Set-Service.

Эта команда поддерживает параметр –WhatIf. Вы также должны использовать –Passthru для передачи объектов в конвейер.

Валидными значениям для параметра –Status являются “запущена” (running), “остановлена” (stopped) и “на паузе” (paused). Помните, что у службы есть зависимые службы, мы не сможете изменять ее, что и продемонстрировано на скриншоте ниже.

К сожалению, у Set-Service отсутствует параметр –Force, поэтому придется вернуться к использованию PowerShell remoting и Invoke-Command. Если вы хотите перезапустить удаленную службу, используйте следующую команду:

Не забудьте использовать –Passthru, в противном случае вторая команда Set-Service ничего не осуществит.
Что по мне, так я предпочитаю работать сразу с несколькими службами, которые я не могу удаленно остановить, используя Set-Service, хотя их запуск проблем составляет. Я использую Invoke-Command. Но помните, что используя параметр –Computername PowerShell осуществляет подключение, используя RPC и DCOM, что может привести к проблемам с файрволом. Invoke-Command использует PowerShell remoting, который мы может быть еще не настроили или не включили.

УСТАНАВЛИВАЕМ ТИП АВТОЗАПУСКА СЛУЖБЫ

Set-Service полезнен, когда вы хотите включить или отключить службу, используя параметр –StartupType. Если Вы настроили службу, используя значения Automatic, Manual or Disabled. К сожалению, не существует варианта для Automatic (Delayed).

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

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

Так что если вы хотите выключить и остановить (или включить и запустить) службу, передайте объект в подходящий командлет.

Технически, Set-Service позволяет вам изменить отображаемое имя службы и описание, но лично мне никогда не приходилось использовать в своей работе. Я использую Set-Service для включения и выключения служб. Если необходимо управлять службами удаленно, то я использую Invoke-Command.
Все, что я продемонстрировал в последних статьях, было связано с использованием специфических типов объектов службы, которые, как вы могли заметить, имеют некоторые ограничения. В следующей статье мы рассмотрим другие возможности по управлению службами, которые призваны обойти эти ограничения.

Читайте так же:
Как обновить BIOS Gigabyte

Как убить процесс в Windows 10

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

Это не только повышает производительность вашего ПК, но также может помочь предотвратить шпионское ПО и вирусы. И прежде чем вы спросите: нет, убить процесс в Windows 10 несложно. Мы рассмотрим все способы, которыми вы можете сделать это легко и безопасно.

Зачем убивать процесс в Windows 10?

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

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

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

Удаление ненужных процессов с помощью диспетчера задач

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

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

  1. Чтобы открыть диспетчер задач, нажмите Ctrl + Alt + Delete на клавиатуре. Другой способ — щелкнуть правой кнопкой мыши в любом месте панели задач и выбрать его в открывшемся меню.

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

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

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

  1. Вы также можете переключиться на вкладку «Подробности», чтобы получить более подробный обзор процессов. Посмотрев на имя пользователя, вы можете быстро определить, какие процессы принадлежат системе.

  1. На любой из этих вкладок нажмите кнопку Завершить задачу в правом нижнем углу, чтобы завершить процесс. Задача будет завершена и исчезнет из списка.

Использование командной строки для уничтожения процесса в Windows

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

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

  1. Чтобы использовать Taskkill, сначала откройте командную строку. Введите cmd в поле поиска и щелкните Запуск от имени администратора на правой панели.

  1. Прежде чем вы сможете использовать Taskkill, вам необходимо знать имя или PID рассматриваемой задачи. Введите список задач, чтобы получить список всех запущенных процессов на вашем компьютере.

  1. Теперь вы можете использовать команду Taskkill двумя способами. Чтобы использовать PID, введите taskkill / F / PID x, где x — это PID процесса, который вы хотите убить. Вы получите уведомление, если операция прошла успешно.

  1. Если вы хотите вместо этого ввести имя, используйте taskkill / IM «x» / F, где x — это имя рассматриваемого процесса.
Читайте так же:
Как в Windows 10 установить дисковые квоты для конкретного пользователя

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

PowerShell

CMD — не единственный способ убить процессы Windows с помощью типизированных команд. Powershell — это встроенный язык сценариев Windows, который предлагает множество аналогичных возможностей. В некотором смысле Powershell — это просто более подробная форма командной строки.

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

  1. Сначала давайте откроем PowerShell. Введите PowerShell в строке поиска и нажмите Запуск от имени администратора.

  1. Откроется окно PowerShell. Она очень похожа на командную строку, только с другим цветом фона.

  1. Введите Get-Process, чтобы получить список всех запущенных на вашем компьютере процессов.

  1. Чтобы завершить процесс, вы можете использовать либо PID, либо имя. Например, введите Stop-Process -ID x -Force, где x — PID для завершения любого процесса.

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

  1. Используйте команду Stop-Process -Name «x» -Force, где x — имя процесса, чтобы убить процесс. На этот раз команда выполнена успешно.

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

Использование KillProcess

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

KillProcess — одна из таких продвинутых программ для управления задачами. В дополнение к его способности уничтожать защищенные системные процессы, он также позволяет создавать «Список уничтожения». Процессы, добавленные в этот список, автоматически завершаются, как только они попадают в активную память. Это может быть отличным способом навсегда закрыть надоедливое вредоносное ПО.

  1. Начать, скачать KillProcess с официального сайта. Существует как установщик, так и портативная версия, которую вы можете использовать без какой-либо установки.

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

  1. Щелкните правой кнопкой мыши процесс, который вы хотите убить, и выберите «Добавить в список».

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

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

Многие способы убить процесс в Windows 10

В Windows 10 есть несколько способов убить процесс. Самый простой способ — использовать диспетчер задач. Он позволяет просматривать и завершать процессы в удобном для понимания формате графического интерфейса.

Если диспетчер задач не может убить процесс, вам нужно использовать что-то более мощное. Вы можете попробовать сторонний инструмент, такой как KillProcess, или использовать инструменты командной строки, чтобы убить защищенный процесс.

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

Управление процессами с помощью командлетов Process

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

Получение процессов (Get-Process)

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

Читайте так же:
Как подключить компьютер (ноутбук) к роутеру сетевым кабелем [LAN] (даже если нет Ethernet-разъема для интернет-кабеля)

Отдельные процессы можно получить, указав их имена или идентификаторы. Следующая команда возвращает процесс Idle:

То, что в некоторых ситуациях командлеты не возвращают данные, является нормальным. Однако если при указании процесса по его идентификатору Get-Process не находит совпадений, он выдает ошибку, так как стандартной целью является получение известного выполняющегося процесса. Если процесс с указанным идентификатором отсутствует, весьма вероятно, что идентификатор неправильный или нужный процесс уже завершился:

Параметр Name командлета Get-Process можно использовать для указания подмножества процессов на основе имени процесса. Параметр Name может принимать несколько имен в виде списка с разделителями-запятыми и поддерживает использование подстановочных знаков, что позволяет задавать шаблоны имен.

Например, следующая команда возвращает процессы, имена которых начинаются с "ex.".

Поскольку класс System.Diagnostics.Process .NET является основой для процессов Windows PowerShell, он удовлетворяет некоторым соглашениям, используемым System.Diagnostics.Process. Одно из таких соглашений требует, чтобы имя процесса для исполняемого файла никогда не содержало ".exe" в конце имени этого файла.

Get-Process также принимает несколько значений для параметра Name.

Параметр ComputerName командлета Get-Process можно использовать для получения процессов на удаленных компьютерах. Например, следующая команда получает процессы PowerShell на локальном (представленным "localhost") и двух удаленных компьютерах.

Имена компьютеров в этих данных не указаны, однако они хранятся в свойстве MachineName объектов процесса, возвращаемых Get-Process . Следующая команда использует командлет Format-Table для отображения свойств ID, ProcessName и MachineName (ComputerName) объектов процесса.

Эта более сложная команда добавляет в стандартные отображаемые данные Get-Process свойство MachineName.

Остановка процессов (Stop-Process)

Windows PowerShell позволяет гибко выводить списки процессов, но как обстоят дела с остановкой процесса?

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

Можно также принудительно вывести запрос с помощью параметра Confirm. Он особенно удобен при использовании подстановочного знака в имени процесса, так как случайно может быть определено соответствие с некоторыми процессами, которые не нужно останавливать:

Сложную обработку процессов можно реализовать с помощью командлетов фильтрации объектов. Так как объект Process имеет свойство Responding, которое равно true, если он перестал отвечать, вы можете остановить все неотвечающие приложения с помощью следующей команды:

Аналогичный подход возможен и в других ситуациях. Предположим, например, что приложение дополнительной области уведомлений запускается автоматически при открытии другого приложения. Эта процедура может работать неправильно в сеансах служб терминалов, однако вам все равно нужно сохранить ее в сеансах, выполняемых в консоли физического компьютера. Сеансы, подключенные к рабочему столу физического компьютера, всегда имеют идентификатор сеанса 0, поэтому можно остановить все экземпляры процесса, находящиеся в других сеансах, с помощью Where-Object и SessionId процесса:

Командлет Stop-Process не использует параметр ComputerName. Поэтому для выполнения команды остановки процесса на удаленном компьютере необходимо использовать командлет Invoke-Command . Например, чтобы остановить процесс PowerShell на удаленном компьютере Server01, введите:

Остановка всех остальных сеансов Windows PowerShell

В некоторых случаях может пригодиться возможность остановки всех выполняющихся сеансов Windows PowerShell, отличных от текущего. Если сеанс использует слишком много ресурсов или недоступен (он может выполняться удаленно или в другом сеансе), возможно, остановить его напрямую не получится. При попытке остановить все выполняющиеся сеансы может быть завершен текущий сеанс.

Каждый сеанс Windows PowerShell имеет переменную среды PID, содержащую идентификатор процесса Windows PowerShell. Можно проверить переменную $PID на наличие идентификатора каждого сеанса и завершить только сеансы Windows PowerShell с другим идентификатором. Следующая команда конвейера делает именно это и возвращает список завершенных сеансов (из-за использования параметра PassThru):

Запуск, отладка и ожидание процессов

Windows PowerShell также имеет командлеты для запуска (или перезапуска), отладки процесса и ожидания завершения процесса перед выполнением команды. Дополнительные сведения об этих командлетах см. в разделах справки по каждому из них.

голоса
Рейтинг статьи
Ссылка на основную публикацию