Блокировка Windows Powershell

Блокировка Windows Powershell

Как предотвратить блокировку Windows Powershell при запуске команды? Я знаю, что в Linux можно добавить & в конце команды, чтобы продолжить использовать терминал, не закрывая этот процесс. Есть ли что-то подобное для Windows Powershell?

решение1

Как предотвратить блокировку Windows Powershell при запуске команды?

Используйте Start-Jobкомандлет для запуска заданий в фоновом режиме.

Это эквивалент Powershell использования &в конце команды в Unix/Linux.


Фоновые задания PowerShell

Самый простой способ создать фоновое задание PowerShell — использовать Start-Jobкомандлет. Вы можете указать блок скрипта с помощью командлета. Например, следующая команда запускает простой блок скрипта, который получает числа от 1 до 50 в качестве фонового задания:

Start-Job {1..50}

Аргументы в блок скрипта можно передать с помощью этой однострочной команды:

Start-Job {Param($log,$newest) Get-EventLog $log Newest $newest} -ArgumentList "system",25

Или вы можете запустить скрипты:

Start-Job -FilePath C:\scripts\Send-UptimeMail.ps1 -ArgumentList (Get-Credential [email protected])

Результаты этих трех команд вы можете увидеть ниже. Я запустил эти команды в PowerShell 3.0. Однако они также будут работать в PowerShell 2.0, хотя вы не увидите столбец PSJobTypeName.

Рисунок 1: Запуск скриптблоков и скриптов в фоновом режиме

Вывод Start-Job— объект очереди заданий. -Job Командлеты используются для управления заданиями и их результатами. Вы можете ссылаться на задания по идентификатору. На изображении выше обратите внимание, как идентификаторы заданий перескакивают с 1 на 3 и на 5.

ИсточникФоновые задания PowerShell

По ссылке выше можно найти гораздо более подробную информацию по следующим темам:

  • Использование Get-WMIObjectкомандлета для создания фоновых заданий

  • Использование Invoke-Commandкомандлета для создания фоновых заданий

  • Управление фоновыми заданиями

  • Получение результатов работы

  • Остановка и ожидание работы


дальнейшее чтение

решение2

В качестве альтернативы Jobs вы можете использоватьRunspaces: они обеспечивают большую производительность и меньшие накладные расходы на выполнение команд в фоновом режиме.

Реализации:

Связанный контент