Powershell через VB.NET. Какой метод и почему?

Мне нужно вызывать команды Powershell через мой код, и я нахожу по крайней мере 2 разных примера этого. Мне интересно, в чем различия между методами и почему я бы использовал один, а не другой.

Первый (более простой?) Метод выглядит примерно так:

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 теперь содержит коллекцию объектов Powershell, которые можно преобразовать в строки, например:

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

Второй метод выглядит так:

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

И тогда я могу перебрать коллекцию возвращаемых объектов и преобразовать в строку таким же образом:

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

Я также знаю, что с помощью любого метода я могу передать командуout-string заставить Powershell возвращать строки вместо объектов.

У меня вопрос, какой метод я должен использовать и почему? Они оба кажутся мне одинаковыми.

Ответы на вопрос(1)

Ваш ответ на вопрос