Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

165
Visualizações
¿Obtiene el error de un script de Powershell dentro de c # y lo genera con una declaración condicional?

Tengo una aplicación de consola y un método que ejecuta un script de PowerShell dentro de la aplicación de consola. Así que estoy tratando de obtener un texto de error que genera en la aplicación y hacer algo con él.

Ejemplo / Lo que estoy tratando de hacer:

 If Error.contains("Object") { // do something here }

Aquí está mi método actual

 public void ExecutePowershellScript() { var file = @"C:\Path\filename.ps1"; var start = new ProcessStartInfo() { FileName = "powershell.exe", Arguments = $"-NoProfile -ExecutionPolicy unrestricted -file \"{file}\"", UseShellExecute = false }; Process.Start(start); }
over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Process.start: ¿cómo obtener la salida?

Cuando cree su objeto de proceso, configure StartInfo apropiadamente:

 var proc = new Process { StartInfo = new ProcessStartInfo { FileName = "program.exe", Arguments = "command line arguments to your executable", UseShellExecute = false, RedirectStandardOutput = true, CreateNoWindow = true } };

luego inicie el proceso y lea de él:

 proc.Start(); while (!proc.StandardOutput.EndOfStream) { string line = proc.StandardOutput.ReadLine(); // do something with line }

Puede usar int.Parse() o int.TryParse() para convertir las cadenas en valores numéricos. Es posible que primero deba manipular las cadenas si hay caracteres numéricos no válidos en las cadenas que lee.

over 4 years ago · Santiago Trujillo Relatório

0

Puede configurar RedirectStandardError = true y acceder a cualquier error desde process.StandardError

 public static void ExecutePowershellScript() { var file = @"C:\Path\filename.ps1"; var start = new ProcessStartInfo() { FileName = "powershell.exe", Arguments = $"-NoProfile -ExecutionPolicy unrestricted -file \"{file}\"", UseShellExecute = false, RedirectStandardOutput = true, RedirectStandardError = true }; using Process process = Process.Start(start); string output = process.StandardOutput.ReadToEnd(); string errors = process.StandardError.ReadToEnd(); }



Bien, borra la sugerencia anterior. Después de ser corregido por mklement0,

Este es un intento perfectamente razonable, pero, desafortunadamente, puede provocar bloqueos (mientras espera que finalice la secuencia de uno, el otro, al exceder el tamaño del búfer, puede bloquear la ejecución del proceso). Si necesita capturar ambos flujos, debe recopilar la salida de uno de ellos a través de eventos. – mklement0

Cambié la solución para usar el evento ErrorDataReceived

 public static async Task ExecutePowershellScript() { var file = @"C:\Path\filename.ps1"; var start = new ProcessStartInfo { FileName = "powershell.exe", Arguments = $"-NoProfile -ExecutionPolicy unrestricted -file \"{file}\"", UseShellExecute = false, // redirect standard error stream to process.StandardError RedirectStandardError = true }; using var process = new Process { StartInfo = start }; // Subscribe to ErrorDataReceived event process.ErrorDataReceived += (sender, e) => { // code to process the error lines in e.Data }; process.Start(); // Necessary to start redirecting errors to StandardError process.BeginErrorReadLine(); // Wait for process to exit await process.WaitForExitAsync(); }
over 4 years ago · Santiago Trujillo Relatório

0

start.Start(); while (!start.StandardOutput.EndOfStream) { string line = start.StandardOutput.ReadLine(); }
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda