¿Cómo devolvería un objeto o varios valores de PowerShell a la ejecución del código C #?

Algunos códigos de C # ejecutan un script de powershell con argumentos. Quiero obtener un código de retorno y una cadena de Powershell para saber si todo estuvo bien dentro del script de Powershell.

¿Cuál es la forma correcta de hacerlo? Tanto en Powershell como en C #

Potencia Shell
<code># Powershell script
# --- Do stuff here ---
# Return an int and a string - how?
# In c# I would do something like this, if this was a method:

# class ReturnInfo
# {
#    public int ReturnCode;
#    public string ReturnText;
# }

# return new ReturnInfo(){ReturnCode =1, ReturnText = "whatever"};
</code>
DO#
<code>void RunPowershellScript(string scriptFile, List<string> parameters)
    {

        RunspaceConfiguration runspaceConfiguration = RunspaceConfiguration.Create();

        using (Runspace runspace = RunspaceFactory.CreateRunspace(runspaceConfiguration))
        {
            runspace.Open();
            RunspaceInvoke scriptInvoker = new RunspaceInvoke(runspace);
            Pipeline pipeline = runspace.CreatePipeline();
            Command scriptCommand = new Command(scriptFile);
            Collection<CommandParameter> commandParameters = new Collection<CommandParameter>();
            foreach (string scriptParameter in parameters)
            {
                CommandParameter commandParm = new CommandParameter(null, scriptParameter);
                commandParameters.Add(commandParm);
                scriptCommand.Parameters.Add(commandParm);
            }
            pipeline.Commands.Add(scriptCommand);
            Collection<PSObject> psObjects;
            psObjects = pipeline.Invoke();

            //What to do here?
            //ReturnInfo returnInfo = pipeline.DoMagic();

        }
    }

  class ReturnInfo
  {
      public int ReturnCode;
      public string ReturnText;
  }
</code>

Me las arreglé para hacer esto a través de formas piratas al usar Write-Output y al basarme en convenciones como "los dos últimos psObjects son los valores que estoy buscando", pero se rompería muy fácilmente.

Respuestas a la pregunta(3)

Su respuesta a la pregunta