コードを介して 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())
2 番目の方法は次のようになります。
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 がオブジェクトではなく文字列を返すようにできることもわかっています。
私の質問は、どの方法を使用する必要があり、その理由は何ですか? どちらも私には同じように見えます。