PowerShell をホストし、「ServerAdmin」モジュールを必要とする Get-Windowsfeature を実行しようとしています。OSはサーバー2008R2です。PS コマンド プロンプトで "Import-module ServerAdmin" を正常に実行できるので、マシンの構成が適切であることがわかります。ただし、カスタム c# ホストで動作させることはできません。以下に示す2つのアプローチを試しました。1 つ目は import-module コマンドを使用して、「どのモジュール ディレクトリにも有効なモジュール ファイルが見つからなかったため、指定されたモジュール 'ServerAdmin' はロードされませんでした」というエラーを報告します。InitialSessionState.ImportModule() を使用する 2 番目の方法も失敗します。そのメソッドからエラーは報告されませんが、get-windowsfeature コマンドは認識されないままです。
最初のアプローチ:
var ps = PowerShell.Create();
var cmd = ps.AddCommand("Import-Module");
cmd.AddArgument("ServerManager");
ps.Invoke();
Console.WriteLine("errors");
// produces "The specified module 'ServerAdmin' was not loaded because no valid module file was found in any module directory"
foreach (var error in ps.Streams.Error)
{
Console.WriteLine(error.ToString());
}
2 番目のアプローチ:
var ps = PowerShell.Create();
var initial = InitialSessionState.CreateDefault();
initial.ImportPSModule(new[]{"ServerManager"});
var runspace = RunspaceFactory.CreateRunspace(initial);
runspace.Open();
ps.Runspace = runspace;
ps.AddCommand("Get-WindowsFeature");
var results = ps.Invoke(); // throws exception because Get-WindowsFeature is not known
foreach (var result in results)
{
Console.WriteLine(result);
}