¿Hay un error en el Start-Process
comando de PowerShell al acceder a StandardError
yStandardOutput
propiedades ?
Si ejecuto lo siguiente, no obtengo ningún resultado:
$process = Start-Process -FilePath ping -ArgumentList localhost -NoNewWindow -PassThru -Wait
$process.StandardOutput
$process.StandardError
Pero si redirijo la salida a un archivo, obtengo el resultado esperado:
$process = Start-Process -FilePath ping -ArgumentList localhost -NoNewWindow -PassThru -Wait -RedirectStandardOutput stdout.txt -RedirectStandardError stderr.txt
powershell
start-process
jzbruno
fuente
fuente
$process= ping localhost
# guardaría la salida en la variable de proceso.Respuestas:
Así
Start-Process
fue como fue diseñado por alguna razón. Aquí hay una forma de obtenerlo sin enviarlo al archivo:fuente
En el código dado en la pregunta, creo que leer la propiedad ExitCode de la variable de inicio debería funcionar.
Tenga en cuenta que (como en su ejemplo) debe agregar los parámetros
-PassThru
y-Wait
(esto me sorprendió por un tiempo).fuente
-NoNewWindow
con-Verb runAs
También tuve este problema y terminé usando el código de Andy para crear una función para limpiar las cosas cuando se deben ejecutar varios comandos.
Devolverá stderr, stdout y códigos de salida como objetos. Una cosa a tener en cuenta: la función no aceptará
.\
en la ruta; Deben utilizarse rutas completas.A continuación, le indicamos cómo utilizarlo:
fuente
IMPORTANTE:
Hemos estado utilizando la función proporcionada anteriormente por LPG .
Sin embargo, esto contiene un error que puede encontrar cuando inicia un proceso que genera una gran cantidad de resultados. Debido a esto, puede terminar con un punto muerto al usar esta función. En su lugar, utilice la versión adaptada a continuación:
Puede encontrar más información sobre este problema en MSDN :
fuente
Realmente tuve problemas con esos ejemplos de Andy Arismendi y de LPG . Siempre debes usar:
antes de llamar
Un ejemplo completo es:
fuente
Aquí está mi versión de la función que está devolviendo System.Diagnostics.Process estándar con 3 propiedades nuevas
fuente
Aquí hay una forma ingeniosa de obtener el resultado de otro proceso de PowerShell:
fuente