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 возвращать строки вместо объектов.
У меня вопрос, какой метод я должен использовать и почему? Они оба кажутся мне одинаковыми.