私はPowerShellスクリプトを持っています、例えば:function2.ps1 with:
function try2
{
return "Hello"
}
そして、C#では、次のようになります。
RunspaceConfiguration rsc = RunspaceConfiguration.Create();
Runspace rs = RunspaceFactory.CreateRunspace(rsc);
rs.Open();
RunspaceInvoke si = new RunspaceInvoke(rs);
PowerShell ps = PowerShell.Create();
ps.Commands.AddScript(". .\\function2.ps1");
ps.Invoke();
ps.AddCommand("try2");
ps.Invoke();
これは、try2がコマンドレット、関数、スクリプトファイル、何とか何とか何とかという名前として認識されないことを示すSystem.Managment.Automation.CommandNotFoundExceptionを出します。
これは本当にトリッキーです、私は何が恋しいですか?:)
アップデート:
function.ps1はc:\function.ps1にあります。
現在のアプローチは次のとおりです。
ps.Commands.AddScript(@"cd C:\; . .\function.ps1;try2");
ps.Invoke();
しかし、それでも失敗し、さらに興味深いものです。
ps.Commands.AddScript(@"cd C:\; . .\function222222222222222222.ps1;try2");
ps.Invoke();
function22222222222222222222.ps1は存在しないと100%確信していますが、エラーは発生しません。確かに、ファイルパスの指定に問題があります...
[アップデート]
これは、PowerShellファイルの参照アセンブリのランタイムエラーが原因であることが判明しました。このアセンブリは、現在ロードされているランタイムよりも新しいランタイムによってビルドされ、ロードできません。
ターゲットフレームワークを4.0から3.5に変更した後、helloが出力されていることがわかりました。したがって、エラーはスクリプトの呼び出しに関するものではなく、スクリプト自体に関するものです。ご迷惑をおかけして申し訳ありませんが、皆様、ありがとうございました!