Как закрыть другие окна PowerShell из скрипта

У меня есть сценарий PowerShell, который имеет следующие шаги:

  1. Открывает другое окно PowerShell
  2. Переходит в каталог угловых проектов
  3. Запускает команду для обслуживания проекта

Есть ли способ закрыть все другие запущенные окна PowerShell, но оставить открытым текущий скрипт и только что созданное окно? После изменений я хотел бы, чтобы он вел себя так:

  1. Закройте все остальные окна PowerShell.
  2. Открывает другое окно PowerShell
  3. Переходит в каталог угловых проектов
  4. Запускает команду для обслуживания проекта

person m0kova01    schedule 17.03.2021    source источник


Ответы (2)


Вы можете использовать Get-Process для перечисления всех запущенных процессов powershell, а затем отфильтровать текущий, сравнив его со значением $PID, прежде чем передать остальные в Stop-Process:

Get-Process powershell |? Id -ne $PID |Stop-Process -Force

При необходимости вы можете включить дочерний процесс по ID:

$childProcess = Start-Process powershell $childProcArgs -PassThru
Get-Process powershell |? Id -notin @($PID;$childProcess.Id) |Stop-Process -Force

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

person Mathias R. Jessen    schedule 17.03.2021

Есть ли способ закрыть все другие запущенные окна PowerShell, но оставить открытым текущий скрипт и только что созданное окно?

$Previous = Get-process -Name *Powershell*;

{YOUR SCRIPT}

Stop-process $previous
person FletcherF1    schedule 17.03.2021