Supongo que mi pregunta es algo similar a esto:
Redirigir la Salida Estándar/Entrada/Error en/desde un cuadro de texto
pero es powershell-céntrica.

Estoy trabajando en una GUI creada mediante PrimalForms que actuará como un frontend para mi sitio web scripts de implementación. Hasta ahora, he estado usando de inicio de la transcripción y de la transcripción de actualizar mi cuadro de texto en la interfaz de usuario que actúa como una consola para ver los eventos de la secuencia de comandos de proceso.

Sin embargo, ahora estoy con la intención en el uso de una secuencia de comandos para nuestro balanceador de carga que es más sensible al tiempo. Necesito el cuadro de texto para ser capaz de mostrar la salida (que se dirige a write-host por dicho script) en tiempo real o cercano a él. La captura de un archivo de registro/expediente académico después de que el hecho de simplemente no hacer.

He estado leyendo en la Comprensión de la Salida » y todos los artículos que pueden encontrar, pero yo no estoy viendo un método que realmente funciona para mis necesidades. Tenía la esperanza de que no era simplemente un ‘set-host’ commandlet podía usar y dirigir todas mis write-host entradas a la misma.

Alguna idea?

Edit: me he considerado de tuberías a un archivo de texto con cadena y actualizando periódicamente de eso, pero me parece una real implementación.

Edit2: hmm, tal vez Tee-objeto… Powershell: Cómo capturar la salida desde el host

Edit3: Bien, estoy casi seguro que con:

ping -n 10 127.0.0.1 | out-string -Stream | foreach-object {$richTextBox1.lines = $richTextBox1.lines + $_}

pero parece colgar en lugar de corriente.

InformationsquelleAutor Yanagi | 2010-08-24

1 Comentario

  1. 3

    Bueno, creo que he encontrado una solución viable. El problema con mi final de la edición anterior no era que la cadena no estaba en streaming, pero que no era actualizar el formulario después de cada línea adicional.

    He aquí una muestra de la idea para aquellos que están interesados (he incluido un par de líneas para el desplazamiento automático en el cuadro de texto así):

    ping -n 10 127.0.0.1 | out-string -Stream | foreach-object {
        $richTextBox1.lines = $richTextBox1.lines + $_
        $richTextBox1.Select($richTextBox1.Text.Length, 0)
        $richTextBox1.ScrollToCaret()
        $form1.Update()}

    La solución para la captura Write-Host es ligeramente diferente, esencialmente, el registro de otra de powershell ejemplo:

    Powershell.exe -noprofile -file .\psbackup.ps1 $txtbox_codePath.text $comboBox_environment.selecteditem | Out-String -Stream | ForEach-Object {
        $txtBox_console.Lines = $txtBox_console.Lines + $_
        $txtBox_console.Select($txtBox_console.Text.Length, 0)
        $txtBox_console.ScrollToCaret()
        $form1.Update()
    }
    • NOTA en realidad no resuelve el problema de agarrar el write-host declaraciones. Solo los objetos que se transfieren a la cadena y, a continuación, el improvisado de la consola.

Dejar respuesta

Please enter your comment!
Please enter your name here