Wie kann ich ein Objekt oder mehrere Werte von PowerShell zur Ausführung von C # -Code zurückgeben?

Einige C # -Codes führen ein Powershell-Skript mit Argumenten aus. Ich möchte einen Returncode und einen String von Powershell erhalten, um zu erfahren, ob im Powershell-Skript alles in Ordnung war.

Was ist der richtige Weg, um das zu tun - sowohl in Powershell als auch in C #

Power 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>
C #
<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>

Ich habe es geschafft, dies mit Write-Output zu tun und mich dabei auf Konventionen wie "Die letzten beiden psObjects sind die Werte, nach denen ich suche" zu verlassen, aber es würde sehr leicht brechen.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage