none
Incrustar consola Powershell en GUI RRS feed

  • Pregunta

  • Hola a todos,

    Estoy experimentando con la creación de GUI (formularios, etc) en powershell y me gustaría incrustar una "consola" en un formulario, de modo que vaya apareciendo la salida, errores, etc. de lo que se ejecuta en el formulario en tiempo real.

    No encuentro ningún tipo de información sobre esto. Ni siquiera si es posible o no.

    Los formularios los hago con los objetos de .NET System.Windows.Forms y System.Drawing.

    ¿Podeis darme alguna indicación, ejemplo o decirme si es o no posible?

    Gracias por anticipado.

    Un saludo.

    Diego.

    jueves, 18 de junio de 2015 10:28

Todas las respuestas

  • Bueno, me contesto a mi mismo con lo que he conseguido, por si a alguien le sirviera de ayuda.

    Como decía, es la primera vez que hago formularios (en cualquier lenguaje). No soy programador, sino administrador de sistemas, y me única experiencia es en scripting.

    Finalmente, he diseñado el formulario con WPF en VS Express y el XML resultante me lo he llevado al script de Powershell.

    En el formulario, he definido un textbox que será la "consola".

    Luego, en la función Write-Log definida que inicialmente registraba en un fichero de texto la salida por consola, he añadido:

    $Form.Dispatcher.Invoke("Render",[action]{$WPFOutputBox.Text += ("$($LogString)`n")})
    $Form.Dispatcher.Invoke("Render",[action]{$WPFOutPutBox.ScrollToEnd()})
    
    

    de modo, que cada "escritura" que se hace por pantalla (en lugar de usar Write-Host utilizo Write-Log que es mi función) actualiza el TextBox del formulario y hace scroll del mismo para que siempre se vea el final.

    Desconozco si es el método mas adecuado, pero funciona perfectamente.

    Espero que pueda servirle a alguien.

    Un saludo.

    Diego.

    viernes, 26 de junio de 2015 7:33