私は自分のアプリケーション内でpowershellをホストしており、制限されたrunspacepoolを設定しています。明らかにカスタムコマンドレットで制限されたPowershellをホストする
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"コマンドレットが利用できないままモジュールをインポートする方法です。
これは私が取得していますエラーメッセージ...
用語「インポート・モジュールは、」コマンドレットの名前、 機能、スクリプトファイル、または操作可能なプログラムとして認識されていないです。 の名前のスペルを確認するか、パスが含まれている場合は、パスが正しいことを確認してから、 を再試行してください。
x0nの回答は役に立ちますか? http://stackoverflow.com/questions/6266108/powershell-how-to-import-module-in-a-runspace –
これはモジュールをインポートする別の方法を示していますが、私はまだ同じエラーが発生しています(私は、私の質問を実際のエラーテキストで更新します)。とにかくありがとう。 –
ちょっとばかげた質問ですが、PS v2が正しくインストールされていますか?あなたのコードは 'Get-Process'のような他のコマンドレットで動作しますか? –