Powershell via vb.net. Qual método e por quê?

Eu preciso chamar comandos do Powershell através do meu código e eu acho pelo menos dois exemplos diferentes de fazer isso. Eu estou querendo saber quais são as diferenças entre os métodos e por que eu usaria um em oposição ao outro.

O primeiro método (mais simples?) É algo assim:

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&nbsp;agora contém uma coleção de objetos Powershell que podem ser convertidos em strings, por exemplo:

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

O segundo método é assim:

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

E então eu posso percorrer a coleção de objetos retornados e converter para string da mesma maneira:

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

Eu também sei que com qualquer método eu posso canalizar o comando paraout-string&nbsp;para fazer Powershell retornar seqüências de caracteres em vez de objetos.

Minha pergunta é, qual método devo usar e por quê? Ambos parecem o mesmo para mim.