Powershell za pośrednictwem VB.NET. Jaka metoda i dlaczego?

Muszę wywoływać polecenia Powershell za pośrednictwem mojego kodu i znajduję co najmniej 2 różne przykłady tego. Zastanawiam się, jakie są różnice między metodami i dlaczego używałbym jednej w przeciwieństwie do drugiej.

Pierwsza (prostsza?) Metoda wygląda mniej więcej tak:

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 teraz zawiera kolekcję obiektów PowerShell, które można przekonwertować na ciągi znaków, na przykład:

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

Druga metoda wygląda tak:

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

A potem mogę iterować przez zbiór zwracanych obiektów i konwertować na łańcuch w ten sam sposób:

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

Wiem też, że za pomocą jednej z metod mogę przekazać komendęout-string aby Powershell zwracał ciągi znaków zamiast obiektów.

Moje pytanie brzmi: jaką metodę powinienem użyć i dlaczego? Oboje wydają mi się tacy sami.

questionAnswers(1)

yourAnswerToTheQuestion