Я создаю приложение C#/WPF, которое должно взаимодействовать с PowerShell (в основном, запускать команды и скрипты). Создание процесса и его запуска не является проблемой, это довольно легко, но это становится все труднее, когда цель состоит в том, чтобы запустить его без какого-либо сценария и сделать его выполнять команды и скрипты позже:Запустите процесс PowerShell в приложении C# и взаимодействуйте с ним
- Запуск на C# приложение
- процесс запуска PowerShell параллельно
- [...] Есть некоторые другие вещи [...] команды
- Run на процесс
Я попытался несколько решений. С System.Diagnostics.Process
класса, я могу запустить этот процесс, дайте ему поработать, но даже если я переориентировать потоки, запись в стандартный ввод только не работает:
var startInfo = new ProcessStartInfo()
{
FileName = "powershell.exe",
Arguments = "-ExecutionPolicy Bypass -NoLogo -NoExit",
CreateNoWindow = true,
RedirectStandardError = true,
RedirectStandardInput = true,
RedirectStandardOutput = true,
UseShellExecute = false,
WindowStyle = ProcessWindowStyle.Hidden
};
_ps = new Process()
{
EnableRaisingEvents = true,
StartInfo = startInfo
};
_ps.Start();
[...]
_ps.StandardInput.WriteLine(TextBox_Input.Text); // No effect
Использование System.Management.Automation.PowerShell
класс не лучше, я могу подготовьте конвейер (добавьте скрипты, которые должны быть выполнены), вызовите его, но я не могу запускать скрипты, поддерживая процесс.
Мне нужно как можно скорее запустить процесс, чтобы отправлять команды и запускать их быстрее, чем я могу (и не запускать запуск процесса, что приведет к задержке).
Целевая версия PowerShell? – PetSerAl
Последнее: PowerShell 5.0 в Windows 10 –
Создайте «Runspace» при запуске приложения, а затем назначьте все последующие экземпляры 'System.Management.Automation.PowerShell', которые вы создаете из ввода текстового поля в эту область. –