Powershell a través de VB.NET. ¿Qué método y por qué?

Necesito llamar a los comandos de Powershell a través de mi código y encuentro al menos 2 ejemplos diferentes de cómo hacer esto. Me pregunto cuáles son las diferencias entre los métodos y por qué usaría uno en lugar de otro.

El primer método (¿más simple?) Es algo como esto:

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 ahora contiene una colección de objetos Powershell que se pueden convertir en cadenas, por ejemplo:

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

El segundo método se ve así:

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

Y luego puedo iterar a través de la colección de objetos devueltos y convertir a cadena de la misma manera:

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

También sé que con cualquier método puedo canalizar el comando paraout-string para hacer que Powershell devuelva cadenas en lugar de objetos.

Mi pregunta es, ¿qué método debo usar y por qué? Ambos me parecen iguales.

Respuestas a la pregunta(1)

Su respuesta a la pregunta