簡単なコードは次のようになり、動作します。
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()
私はあなたが選択できる他のスレッドで次のことを説明しました:
VB.NET経由のPowershell。どの方法とその理由は?
エラー情報について詳しく教えていただけると助かります。
完全な例でさらに情報を追加しました:
非常に単純な C# DLL を作成し、以下のように VB.NET から呼び出しました。
C# DLL コード: (サードパーティ モジュールと考えてください)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Xml.Linq;
namespace CSVtoXML
{
public class Actions
{
public Actions()
{
}
public static string writeHello(string name)
{
return "Hello " + name;
}
}
}
このサード パーティの DLL を PS コマンド ウィンドウでテストするには、次のコマンドを使用します。
PS C:\2012> [Reflection.Assembly]::LoadFile("C:\2012\CSVtoXML.dll")
GAC Version Location
--- ------- --------
False v2.0.50727 C:\2012\CSVtoXML.dll
PS C:\2012> [CSVtoXML.Actions]::writeHello("Avkash")
Hello Avkash
PS C:\2012>
以下のように、VB.NETアプリケーションにサードパーティモジュールをロードすることで、同じ手順を使用しています。
Module Module1
Sub Main()
Dim PowerShell As Management.Automation.PowerShell = PowerShell.Create()
Dim PowerShellCommand As New PSCommand
PowerShellCommand.AddScript("[Reflection.Assembly]::LoadFile('C:\2012\CSVtoXML.dll')")
PowerShellCommand.AddScript("[CSVtoXML.Actions]::writeHello('Avkash')")
PowerShell.Commands = PowerShellCommand
Dim results = PowerShell.Invoke()
MsgBox(results.Item(0).ToString())
End Sub
End Module
コードが期待どおりに動作することを証明するデバッグ ウィンドウの出力を次に示します。
