Я пишу встроенный хост powershell в C# (приложение Windows), а если есть внешняя программа, вызываемая в конвейере, консольное окно мигает, когда оно выполняется. Ping и NetStat являются примерами этого, как показано в следующем фрагменте кодаПользовательский Powershell Host Вызывает внешнюю программу без окна консоли
using (PowerShell PowerShellInstance = PowerShell.Create())
{
PowerShellInstance.AddScript("Get-Content test.txt; ls; ping www.google.com");
PowerShellInstance.Invoke();
# ...more code here to print output etc
}
После выполнения команды пинг достигается в трубопроводе консольное окно будет всплывающее окно выполнения команды и возвращать результаты. Я хотел бы сделать это без отображения окна консоли. Я искал и нашел примеры того, как справиться с этим, начав процесс для внешних команд и перенаправляя вывод.
Я могу это сделать, конечно, но как бы проверить, является ли команда в конвейере вызовом внешней программы?
Мне бы очень хотелось иметь возможность обрабатывать это в общем случае, если это возможно; что я не хочу тестировать конкретные программы (например, ping, netstat, net), если мне это не нужно. Собственный powershell.exe делает это так, что это возможно.
Любые причины, по которым вы не хотите использовать встроенные методы для этих целей? Как https://msdn.microsoft.com/en-us/library/system.net.networkinformation.ping%28v=vs.110%29.aspx? –
Нет, это сработает, если у вас есть методы для всех обычных утилит Windows. Это так? Кроме того, если пользователь вводит «netstat» во встроенную командную строку, PowershellInstance автоматически вызывает netstat.exe? Как я могу сказать это иначе, не анализируя каждую команду, а затем проверяя, есть ли у нее встроенный альтернативный метод. Я хотел бы иметь такую же функциональность в своем приложении, что и родной powershell.exe, если это возможно. – RG5
Как создать сценарий и запустить его через командную строку с помощью 'Process.Start' и установить, чтобы он не создавал окно? Вы можете перенаправить стандартные потоки ввода/вывода обратно в приложение и прочитать его со стандартными объектами потока. –