Спасибо за ваш ответ, Джейсон. Когда вы говорите, что привязали stdin к nul, это было путем получения входного потока процесса и его закрытия? Я попытался закрыть входной и выходной поток процесса, но безуспешно.

аюсь написать простое приложение, которое принимает аргумент командной строки (это будет файл Powershell ps1), а затем запускаю его. Итак, я экспериментировал с рядом различных подходов и, похоже, столкнулся с проблемой. Если я пытаюсь вызвать powershell изнутри java, процесс windows запускается и отображается через проводник процессов, однако powershell никогда не возвращается, он выглядит как-то в виде цикла. Я использую команду:

            String command = "powershell -noprofile -noninteractive \"&C:\\new\\tst.ps1\"";

Затем команда выполняется с использованием:

Runtime systemRuntime = Runtime.getRuntime();
Process proc = systemRuntime.exec(command);

На данный момент я жестко кодирую местоположение файла ps1, поскольку я пытался исключить это как проблему. С помощью проводника процессов я вижу зависший процесс powershell и команду, которая была ему передана:

powershell -noprofile -noninteractive "&C:\new\tst.ps1"

который при копировании в окно cmd работает для запуска файла tst.ps1. Сам файл невероятно прост в этом примере, и я думаю, что могу исключить его как причину остановки, так как я пытался запустить другие файлы ps1, такое же поведение можно увидеть.

Чтобы еще больше добавить к путанице, если я использую код Java, опубликованный выше, и передаю команды powershell вместо имени файла, то он успешно запускается.

Я просматривал сеть и видел множество людей, сталкивающихся с той же проблемой, но никто, похоже, не разместил там решение, я надеюсь, что это простой упущение с моей стороны, и его легко исправить.

Любые советы / подсказки приветствуются: D

Алан