私はアプリ内でPowerShellをホストしており、制限付きのrunspacepoolを設定しました。これは基本的に空です(私の知る限り)。
public class MyPowerShell : IDisposable
{
private RunspacePool _runspacePool;
private PowerShell _shell;
public MyPowerShell()
{
try
{
var initialSessionState = InitialSessionState.CreateRestricted(SessionCapabilities.RemoteServer);
_runspacePool = RunspaceFactory.CreateRunspacePool(initialSessionState);
_shell = PowerShell.Create();
_shell.RunspacePool = _runspacePool;
_shell.RunspacePool.Open();
_shell.AddCommand("Import-Module").AddParameter("Assembly", Assembly.GetExecutingAssembly());
_shell.Invoke();
_shell.Commands.Clear();
}
catch (Exception ex)
{
throw;
}
}
public void Dispose()
{
_shell.RunspacePool.Close();
_shell.Dispose();
}
public string[] Exec(string commandText)
{
var results = new List<string>();
try
{
_shell.AddScript(commandText);
foreach (var str in _shell.AddCommand("Out-String").Invoke<string>())
{
results.Add(str);
}
}
catch (Exception ex)
{
results.Add(ex.Message);
}
return results.ToArray();
}
}
明らかに、私がこのコードを実行すると...
_shell.AddCommand("Import-Module").AddParameter("Assembly", Assembly.GetExecutingAssembly());
_shell.Invoke();
_shell.Commands.Clear();
使用可能な「Import-Module」コマンドレットがないため、失敗します。だから、私の質問は、「Import-Module」コマンドレットを使用せずにモジュールをインポートするにはどうすればよいですか?
これは私が受け取っているエラーメッセージです...
「Import-Module」という用語は、コマンドレット、関数、スクリプトファイル、または操作可能なプログラムの名前として認識されません。名前のスペルを確認するか、パスが含まれている場合は、パスが正しいことを確認して、再試行してください。