Как предотвратить блокировку 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.
Вывод
Start-Job
— объект очереди заданий.-Job
Командлеты используются для управления заданиями и их результатами. Вы можете ссылаться на задания по идентификатору. На изображении выше обратите внимание, как идентификаторы заданий перескакивают с 1 на 3 и на 5.
ИсточникФоновые задания PowerShell
По ссылке выше можно найти гораздо более подробную информацию по следующим темам:
Использование
Get-WMIObject
командлета для создания фоновых заданийИспользование
Invoke-Command
командлета для создания фоновых заданийУправление фоновыми заданиями
Получение результатов работы
Остановка и ожидание работы
дальнейшее чтение
решение2
В качестве альтернативы Jobs вы можете использоватьRunspaces: они обеспечивают большую производительность и меньшие накладные расходы на выполнение команд в фоновом режиме.
Реализации: