PowerShell über VB.NET. Welche Methode und warum?

Ich muss Powershell-Befehle über meinen Code aufrufen und finde mindestens 2 verschiedene Beispiele dafür. Ich frage mich, was die Unterschiede zwischen den Methoden sind und warum ich eins im Gegensatz zum anderen verwenden würde.

Die erste (einfachere?) Methode sieht ungefähr so ​​aus:

Dim command As New PSCommand()
command.AddScript("<Powershell command here>")
Dim powershell As Management.Automation.PowerShell = powershell.Create()
powershell.Commands = command
Dim results = powershell.Invoke()

results Enthält jetzt eine Sammlung von Powershell-Objekten, die in Zeichenfolgen konvertiert werden können. Beispiel:

MsgBox(results.Item(0).ToString())

Die zweite Methode sieht folgendermaßen aus:

Dim invoker As New RunspaceInvoke
Dim command As String = "<Powershell command here>"
Dim outputObjects As Collection(Of PSObject) = invoker.Invoke(command)

Anschließend kann ich die Auflistung der zurückgegebenen Objekte durchlaufen und auf dieselbe Weise in einen String konvertieren:

For Each result As PSObject In outputObjects
    Console.WriteLine(result.ToString)
Next

Ich weiß auch, dass ich mit beiden Methoden den Befehl weiterleiten kannout-string um Powershell zu veranlassen, Zeichenfolgen anstelle von Objekten zurückzugeben.

Meine Frage ist, welche Methode soll ich verwenden und warum? Sie scheinen mir beide gleich zu sein.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage