У меня есть script, который я пишу, который полагается на функции в импортированном модуле. Этот script занимает некоторое время из-за IO (веб-запросов), и я хотел бы его разделить на сотни тысяч итераций блока script.
После попытки нескольких разных методов (с небольшим успехом из-за ограничений с помощью Start-Job
и других вещей) текущая реализация основана на предварительном создании пула оболочек powershell, созданных с помощью $shell = [Powershell]::Create()
.
Один из методов модуля, который я должен вызвать для начальной загрузки оболочки (поэтому в правильном состоянии), имеет вызов Write-Host
в ней. Когда я вызываю $shell.Invoke()
, возникает следующая ошибка:
Write-Host: команда, которая запрашивает у пользователя ошибку, потому что хост-программа или тип команды не поддерживают пользователя взаимодействие. Попробуйте хост-программу, которая поддерживает взаимодействие с пользователем, например, Windows PowerShell Console или Windows PowerShell ISE и удалять команды, связанные с подсказками, из типов команд, которые не поддерживают взаимодействие с пользователем, например Рабочие процессы Windows PowerShell.
Теперь, поскольку модуль является настраиваемым, я могу удалить вызовы Write-Host
, но это уменьшает удобство для пользователя, когда он запускается непосредственно конечными пользователями. Я могу создать параметр switch
, который не выполняет Write-Host, если параметр имеет значение true, но сделать это по строке - это хорошая работа (возможно, но я бы предпочел).
Можно ли каким-либо образом получить Write-Host
, чтобы не было ошибок в этом сценарии? Я действительно не забочусь о входе в этот сценарий, я просто не хочу ошибок.