PowerShell側で引数を指定されていた場合だと
以前までのメソッドでは動かなかったので更新してみました。
PowerShellソース
今までのメソッドでは$inputを使用していれば問題なかったのですが、
下記の様にParamで指定されていた場合は使い物になりません。
[CmdletBinding()] Param( [Parameter(Mandatory=$True,Position=1)] [string]$Test1, [Parameter(Mandatory=$True)] [string]$Test2 ) Add-Type -AssemblyName System.Windows.Forms [System.Windows.Forms.MessageBox]::Show($Test1, $Test2)
クラス更新内容
更新したソースについては「ExecPowerShell」に公開しています。
C# 対応版サンプル
今回追加したメソッドを使用することで、下記のようにPowerShellを実行することが可能です。
namespace PSExecTest { using ExecPowerShell; using System.Collections.Generic; class Program { static void Main(string[] args) { ExecPS execPs = new ExecPS(); List<ExecPS.ParamStruct> paramList = new List<ExecPS.ParamStruct>(); ExecPS.AddParam(ref paramList, ExecPS.paramType.PARAMETER, "Test1", "ほげほげ"); ExecPS.AddParam(ref paramList, ExecPS.paramType.PARAMETER, "Test2", "すごーい!"); execPs.ExecPowerShell("./test2.ps1", paramList); } } }
全然休めてないから眠い…