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
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
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.