Я хочу запустить два bat-файла с помощью командлета Powershell Start-Job и иметь возможность получать их выходные данные и поддерживать их работающими, пока пользователь не нажмет любую клавишу, но, к сожалению, я получаю следующую ошибку:
[localhost] There is an error processing data from the background process. Error reported: Cannot process an element
with node type "Text". Only Element and EndElement node types are supported..
+ CategoryInfo : OpenError: (localhost:String) [], PSRemotingTransportException
Вот моя реализация Power-Shell.
$workingDir = (Get-Location)
$first = Start-Job -ScriptBlock {
param($workingDir)
$firstPath = -join($workingDir, "\first\batFileName.bat")
Start-Process -NoNewWindow -FilePath ($firstPath) -PassThru
} -ArgumentList $workingDir
$second = Start-Job -ScriptBlock {
param($workingDir)
$secondPath = -join($workingDir, "\second\batFileName.bat")
Start-Process -NoNewWindow -FilePath ($secondPath) -PassThru
} -ArgumentList $workingDir
Receive-Job -Job $second
Receive-Job -Job $first
Write-Host "The processes are running"
Write-Host "Press any key to kill them..."
$Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyUp") > $null
Stop-Job $first
Stop-Job $second
Можете ли вы помочь мне найти, в чем проблема, и указать, как правильно это реализовать?
Редактировать:
Мне удалось реализовать что-то, что работает аналогичным образом. Этот пример можно скачать здесь: https://github.com/gonaumov/batWithPowerShell Он запускает два задания с first.bat и second.bat, но у меня все еще есть некоторые проблемы. Через некоторое время я начинаю получать только сообщения из второго файла bat.