Escribí un servidor ssh en C# y pensé que sería bueno conectar PowerShell como shell. He intentado 2 métodos para que esto funcione correctamente, pero ambos están lejos de ser perfectos. Esto es lo que he intentado:¿Es posible falsificar la consola de Windows api?
- Ejecute powershell.exe y redirija su estándar (entrada/salida). Esto no funciona bien con , ya que powershell.exe detecta que se redirige, cambia su comportamiento. Lo que es más, espera datos de entrada en los comandos stdid, no . Entonces usa la API de la consola para leer comandos.
- Host powershell en una aplicación de "envoltura". Esto tiene la ventaja de que es capaz de proporcionar una implementación de "consola" a powershell (a través de PSHostRawUserInterface). Esto funciona mejor, pero aún puede invocar comandos (en su mayoría aplicaciones de consola reales) como "... | more", que esperan para poder usar la API de consola, y posteriormente intentar leer desde la consola del contenedor proceso.
Entonces, lo que me gustaría hacer es tener un conjunto de funciones para reemplazar las funciones de entrada/salida de la consola que utilizan las aplicaciones de la consola, para que pueda manejarlas. Pero eso parece bastante drástico hasta el punto de ser una mala idea de diseño (imo).
Ahora estoy en la idea de manipular la consola enviando las teclas relevantes con funciones nativas/Pinvoke como WriteConsoleInput. Supongo que podría ser posible falsificar la consola de esa manera. Pero no veo cómo podría "leer" lo que sucede en la consola.
También tenga en cuenta que es un servicio, por lo que preferiblemente no debe generar una ventana de consola real, aunque tal vez en la sesión de Windows 0 que no se muestra y no importa.
Bueno, para empezar, me gustaría acceder a mi ssh desde mi dispositivo móvil Android. No he visto un verdadero cliente de Powershell para eso. Hay una parte definitiva "simplemente buena diversión" para este proyecto. En cuanto a Cygwin ... bueno, tengo problemas (quizás irracionales) con eso. –
Prueba este [PowerShellInside] (http: //www.powershellinside.com/powershell/ssh/download.aspx). Existe una versión gratuita de conexión. – JPBlanc
Humm, un hallazgo interesante, lo comprobaré. Me hace preguntarme cómo solucionaron el problema. –